- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我正在使用 OpenCVSharp,但目前我的一半代码在 C 中,另一半在 C++ API 中,我正在尝试将其全部移植到 C++ 版本以避免弃用的 API 以及避免加载图像两次(共享 Mat
而不是每个图像有一个 Mat
和一个 CvMat
)
这是我的有效代码:
CvMat distortion = new CvMat(8, 1, MatrixType.F64C1);
distortion[0, 0] = camera.CameraConfig.k1;
distortion[1, 0] = camera.CameraConfig.k2;
distortion[2, 0] = camera.CameraConfig.p1;
distortion[3, 0] = camera.CameraConfig.p2;
distortion[4, 0] = camera.CameraConfig.k3;
distortion[5, 0] = 0;
distortion[6, 0] = 0;
distortion[7, 0] = 0;
CvMat intrinsic = new CvMat(3, 3, MatrixType.F32C1);
intrinsic[0, 0] = camera.CameraConfig.fx;
intrinsic[0, 1] = camera.CameraConfig.skew;
intrinsic[0, 2] = camera.CameraConfig.cx;
intrinsic[1, 0] = 0;
intrinsic[1, 1] = camera.CameraConfig.fy;
intrinsic[1, 2] = camera.CameraConfig.cy;
intrinsic[2, 0] = 0;
intrinsic[2, 1] = 0;
intrinsic[2, 2] = 1;
Cv.Undistort2(camera.SourceImage, newSourceImage,intrinsic,distortion);
代码(在我输入时似乎是一个明显的端口)不起作用(我最终得到了场景中存在的一种颜色的单色图像):
Mat distortion = new Mat(8, 1, MatType.CV_64FC1);
distortion.Set(0, 0, camera.CameraConfig.k1);
distortion.Set(1, 0, camera.CameraConfig.k2);
distortion.Set(2, 0, camera.CameraConfig.p1);
distortion.Set(3, 0, camera.CameraConfig.p2);
distortion.Set(4, 0, camera.CameraConfig.k3);
distortion.Set(5, 0, 0);
distortion.Set(6, 0, 0);
distortion.Set(7, 0, 0);
Mat intrinsic = new Mat(3, 3, MatType.CV_32FC1);
intrinsic.Set(0, 0, camera.CameraConfig.fx);
intrinsic.Set(0, 1, camera.CameraConfig.skew);
intrinsic.Set(0, 2, camera.CameraConfig.cx);
intrinsic.Set(1, 0, 0);
intrinsic.Set(1, 1, camera.CameraConfig.fy);
intrinsic.Set(1, 2, camera.CameraConfig.cy);
intrinsic.Set(2, 0, 0);
intrinsic.Set(2, 1, 0);
intrinsic.Set(2, 2, 1);
var newSourceImage = camera.SourceImage.Undistort(intrinsic, distortion);
我是否错误地设置了值?移植不是那么简单吗?
最佳答案
它看起来像是您的 camera.SourceImage
和 newSourceImage
的区别。在您的第一个代码段中,您将 newSourceImage
分配到范围之外,因此我假设您可以执行以下操作:
newSourceImage = new Mat(new Size(...), MatType.CV_8UC3)
但在您的第二个片段中,您将其创建为 var newSourceImage = ...
。所以,看起来“undistort”本身决定了你的 Mat 类型并且做错了。
你能展示所有的初始化吗?
关于c# - 如何在 OpenCVSharp 代码中使用新的 C++ 样式 API?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32870747/
我正在一个项目中,该项目需要使用RTSP或RTMP流式传输到wowza流式传输服务器。我知道如何捕捉视频。我尝试使用CvVideoWrier。但这并没有真正起作用。 CvCapture cap = C
我在将 Zxing 库与 openCvSharp 集成时遇到问题。我正在尝试使用相机实时读取条形码。 它在 Result result = barcodeReader.Decode(test); 行抛
我正在使用 OpenCvSharp4 4.1.0.20190416 和深度神经网络函数。 ... mDnn.SetInput(blob, "data");
有谁知道转换代码 LbgrtoLab 中的“L”是什么意思?我在网上搜索并找不到关于此转换代码的任何描述,目前我尝试同时使用 BgrtoLab/LbgrtoLab,我发现使用相同图像源的 A 和 B
我正在尝试实现一个在二进制图像中找到轮廓并过滤掉小轮廓的函数。 这是我的代码和示例图像。这是一个 super 简单的功能,可以去除小面积的 Blob 。但我不断得到“边缘轮廓”而不是区域轮廓。 :S
BitmapConverter.cs包括功能 public static unsafe void ToBitmap(this Mat src, Bitmap dst) 稍后(在第 403 行)我们有这
我试图识别图像中的文本。 实际上,我正在尝试识别图像中的文本位置,然后将其转换为文本。 我发现了一些用 C++ 编写的代码,我正在尝试将其转换为 C#。你能帮帮我吗? Extracting text
我最近将我的项目库从 Emgu CV 转移到了 OpenCVSharp。在 Emgu CV 中翻转图像(使用 pictureBox)的代码是: Image f = _capture.QueryFram
不幸的是,我正在为此苦苦挣扎。我有一个混合了 Emgu 和 OpenCvSharp 的项目。听起来很奇怪,但有其原因。 无论如何,我有一个 EMGU.CV.Image,我想用它来填充 OpenCvSh
有一条直线从Point(x1, y1) 到Point(x2, y2)。我想得到那条线上的所有点。 我知道,OpenCv 有 LineIterator。但是我找不到如何在 C# 上使用它? 有 C++
我正在尝试在 OpenCvSharp 中使用霍夫变换,但我对此有很多疑问。有人可以在这里解释或给我一个示例代码吗?我是编程的新手。请记住它是 OpenCvSharp,所以请尝试提供相应的帮助。提前谢谢
我正在尝试使用 Cv2.FindHomography 方法查找两个源的单应矩阵。到这里为止一切正常。问题是我无法获取/打印矩阵值。我真的是 C# 的初级水平。我找到了一种 documentation属
多次尝试正确编译,但显然我做错了什么。 我有 OpenCV 和 OpenCVSharp 的最新 SVN check out 。我使用 CMake 构建我的 OpenCV 解决方案(使用 x64 Vis
我在 Visual Studio 2013 中使用 OpenCvSharp。我已经通过 Nuget 安装了它,它工作正常。 但是当我部署应用程序时,它有一个 128M 的 DLL 目录。 x86 为
我的代码非常简单——我对图像进行阈值处理,然后尝试对其应用 DistanceTransform: var source = new Mat(path, ImreadModes.AnyDepth | I
我正在使用 OpenCVSharp 运行一些校准测试,但我似乎无法让 FindCirclesGrid 工作,我在调用 FindCirclesGrid 时遇到了一个非常意外的 AccessViolati
我正在尝试在 Visual Studio 2012 中使用 opencvsharp v2.4 64x 构建一个项目。该项目是使用 .net 4.5 和 x64 目标构建的。我已经安装了 VS08+VS
嗨,我正在使用 Visual Studio 2008 和 C++ 来实现分水岭算法,它运行良好。但我最近正在使用 Visual Studio 2010 中的 opencvsharp 包装类将相同的代码
我已经在我的项目中使用 NuGet 管理器安装了最新的 OpenCVSharp 2 (2.4.10.201...)。与 OpenCVSharp.CvMat 相关的一切工作正常(加载、操作等)所以我确信
我已经在我的 XAML 代码后面编写了下面的代码,以在名为 查看。 Mat mat = new Mat(); VideoCapture videoCapture = new VideoCapture(
我是一名优秀的程序员,十分优秀!