问题标签 [emgucv]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
12796 浏览

c# - 如何实现光流跟踪器?

我正在使用 OpenCV 包装器 - Emgu CV,并且我正在尝试使用光流实现运动跟踪器,但我无法找到一种方法来组合从 OF 算法中检索到的水平和垂直信息:

我的问题是不知道如何结合垂直和水平移动的信息来构建移动物体的跟踪器?新形象?

顺便说一句,有一种简单的方法可以在当前帧上显示流信息吗?

提前致谢。

0 投票
1 回答
4954 浏览

c# - Emgu (OpenCV for C#) - 使用 cvStereoRectify 构建视差图

我一直在为 OpenCV 使用出色的 Emgu C# 包装器来从自制的立体设备中收集图像。两个网络摄像头用螺栓固定在一块木头上,相距 35 厘米,希望能让我生成 10-20 米范围内的深度图。我已将它们设置为尽可能平行(三角测量测试大约为 89.3 度)。

我正在尝试根据这些制作视差图,尽管该过程作为代码工作,但结果是非常随机的。我的意思是每次我尝试运行立体校正时,我都会得到非常不同的结果,而且图像经常严重扭曲,屏幕上几乎看不到任何东西。

据我了解,这样做的方法如下:


1) 打印出棋盘图案(例如 6 x 8 内角)- 粘在平坦的东西上。

2) 从相机 1 拍摄一组大约 10 张照片,将棋盘全视但位置不同。

3)使用 CameraCalibration.FindChessboardCorners 找到内角(6乘8)

4) 使用 img.FindCornerSubPix() 将这些角位置细化到亚像素级别

5) 使用 CameraCalibration.CalibrateCamera() 计算内在相机细节,并将其保存为 XML 文件

6) 对摄像机 2 重复上述操作。

7) 现在您有了内部相机失真信息,您可以拍摄立体照片对并使用 CameraCalibration.StereoCalibrate() 和先前计算的内在数据来计算外在信息(相机 1 和 2 之间的偏移和旋转)。

8) 使用 CvInvoke.cvStereoRectify() 和 CvInvoke.cvInitUndistortRectifyMap() 然后使用 CvInvoke.cvRemap() 构建一个输出图像,该图像应该在 Y 中排列,以便您可以运行立体对应测试之一。

我发现您需要使用 Emgu 2.1 版本 806 才能让 cvStereoRectify 正常工作而不会出现访问冲突错误。


我想我的问题是:

A) 我的流程正确吗?我一直在将相机固有校准作为一个单独的过程进行,因为由于相机相距 35 厘米,因此在办公室中将棋盘放在他们两个的视野中并移动它并不容易......因为它很快就会离开一边摄像机视图之一。我认为由于这些值是内在的,因此这些值与相机有关,因此应该可以转移到立体程序。这个对吗?

似乎内在价值在 cvStereoRectify 过程中发生了变化,并且变得非常不同。

例如。第一阶段的失真值 = 0.22,-1.2,0.01,-0.01,2.6 在 cvStereoRectify 之后值更改为 = 10,-489,-0.03,-0.09,13208

我不是专家,但第一组似乎更像我从其他人的评论中看到的,第二组似乎很出路!

B) 有什么方法可以阻止在 cvStereoRectify 期间更新的内在 + 失真值?

C)这是否适合内在价值(937,0,290,0,932,249,0,0,1)?

非常感谢您提供的任何提示...我已经坚持了一段时间...而且我真的不确定该过程的哪一部分引发了错误。任何提示或建议将非常受欢迎......

0 投票
1 回答
7036 浏览

c# - Opencv Emgu c#人脸提取

到目前为止,我已经设法让我的程序工作并检测面部,现在我想做的是提取检测到的区域并显示在我添加的新图片框中,完成后我想将图片添加到数据库和将检测到的人脸与它们进行比较。所以请帮忙

0 投票
1 回答
1000 浏览

c# - EigenObjectRecognizer 使用帮助

我已经制作了检测面部的程序,现在我要做的是识别它们通过谷歌搜索我知道它是由 EigenObjectRecognizer 完成的,任何人都使用过它,或者可以告诉我如何使用它?

0 投票
1 回答
2591 浏览

c# - C# 使用 Emgu 按像素颜色裁剪图像

嘿,我想知道是否有人对如何使用 Emgu Wrapper 按像素颜色裁剪图像有任何见解。

我已经将图像灰度化以进行处理,并且我不需要的所有图像都是黑色的。有什么办法可以裁剪掉这些像素?现在我不是在谈论让它们透明,我实际上想让输出图像更小。

谢谢!

0 投票
1 回答
1066 浏览

c# - 通过颜色权重选择图像部分上的点

需要在图像上选择指定数量的点(实际上是在该图像的一部分上)。图像的较暗部分更重要。

最简单的方法是随机选择它们。但是,即使放弃使用过的点,通常也会因为一些点过于靠近其他点而结束,尤其是在考虑权重时。

也许在选择点后应该动态减少权重?没试过。

我注意到原始图像有太多不同的颜色,所以我想平滑它以切断相似的颜色。然而,转换为灰度是不够的。
我使用Emgu CV(OpenCV 包装器)函数对图像进行二值化。比我试图计算流域但计算出的区域并不那么容易分开。一般来说,分水岭是一种非常“不直观”的方法来检测较暗的地方。

简单地说:我想在图像上从较暗的部分开始标记点 - 应该比较亮的部分更频繁地标记。点应该分散在一组相似的颜色上,以避免在附近的地方堆积。

该算法不必是准确的。它可以在下一次迭代中给出不同的结果。从 10 到 150-200 的点数不会很大。

如何计算从较暗区域开始散布在图像上的指定点数?

为了形象化我的意思,请看下面的图片。它包含选定的点(数量。~20)。大多数较暗的部分被选中。下一次迭代后,这些点不必出现在相同的位置。但我想要的是在较轻的区域选择点,因为它们的数量会更高。

当然,对于不同的图像,跳出黑暗所需的点数会有所不同。

点选后的图片

0 投票
2 回答
5173 浏览

c# - 无法在 Emgu 中创建捕获

当我尝试在 C# 中使用Emguavi 文件中捕获视频时,我得到了空引用异常。

捕获捕获 = 新捕获(“somepath.avi”)

我的操作系统上安装了 K-Lite 编解码器。这是堆栈跟踪:

0 投票
1 回答
1524 浏览

c# - c#中的霍夫圆,动态内存

我在从矩阵获取数据的动态内存分配中遇到问题

问题一:不知道圈数,如何定位动态内存?

问题2:现在圆是[100 ,3]的矩阵,我怎样才能得到

我怎样才能得到

我的 for 循环应该是什么样子才能从矩阵中获取数据,并且强制转换应该是点和整数。

我已经试过了(不工作/错误)

因为不是仅复制(必需)(i)行,而是复制整个矩阵(圆圈)并且 float x=......给出错误

请在这方面帮助我

问候


很抱歉回答我的问题。请给动态内存分配和矩阵数据一些提示

0 投票
1 回答
1062 浏览

c# - 位图->图像窗口窗体应用程序

我在将 System.Drawing.Image 转换为 Emgu.CV.Image 时遇到问题。我可以在表单应用程序中加载我的图像

但是这段代码给了我无效参数的错误

有人知道为什么吗???问候

0 投票
1 回答
496 浏览

.net - Parallel.ForEach 循环中的 AccessViolationExeption

我正在尝试使用 EmguCV 在 .NET 中执行此代码:

这是我的 GetPicturesFromCamera() 方法:

在标记点我总是得到一个 AccessViolationException 说“试图读取或写入受保护的内存。这通常表明其他内存已损坏。”,但我没有发现错误。

你能弄清楚吗?

编辑:

我也按顺序尝试了它,这样它就可以工作:

但这样它不会: