问题标签 [opencvsharp]

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 投票
1 回答
1632 浏览

c# - 内存泄漏问题。使用 OpenCVSharp 在 Unity 中进行眼动追踪

我已经在这个项目上工作了几个月,我正在尝试使用 OpenCVSharp 将眼动追踪集成到 Unity 中。我已经设法让一切正常工作,包括对瞳孔的实际跟踪等,但是我遇到了内存泄漏。基本上在程序运行 20-30 秒后它会冻结并且控制台错误说“无法分配(在此处插入数字)位”。查看程序运行期间的内存使用情况后,您可以看到它的使用量稳步攀升,直到达到最大值然后崩溃。

现在我花了很长时间试图解决这个问题,并阅读了很多关于正确发布图像/存储等的帮助帖子。尽管我正在这样做,但它似乎并没有正确释放它们。我尝试使用垃圾收集器强制它回收内存,但这似乎也不起作用。我只是对图像做一些根本性的错误以及如何回收它们吗?或者是每帧都创建新图像(即使我正在发布它们)导致问题。

任何帮助将不胜感激。这是下面的代码,您可以忽略更新函数中的许多内容,因为它与实际的跟踪部分和校准有关。我意识到代码非常混乱,对此感到抱歉!需要担心的主要部分是 EyeDetection()。

0 投票
1 回答
1886 浏览

c# - 在 OpenCV 中将图像转换为 CvMat 以训练神经网络

我正在编写一个程序,它使用 OpenCv 神经网络模块以及 C# 和 OpenCvSharp 库。它必须识别用户的脸,所以为了训练网络,我需要一组样本。问题是如何将样本图像转换为适合训练的数组。我得到的是 200x200 位图图像,以及具有 40000 个输入神经元、200 个隐藏神经元和一个输出的网络:

那么我正在尝试将 BitMap 图像转换为 CvMat 数组:

然后,在尝试训练它时,我遇到了这个例外:

输入训练数据应该是一个浮点矩阵,其行数等于训练样本数,列数等于第 0(输入)层的大小

培训代码:

我是 OpenCV 的新手,我认为由于缺乏对 CvMat 结构的理解,我在转换时做错了。我的错误在哪里,还有其他转换位图的方法吗?

0 投票
1 回答
974 浏览

opencv - android 的单声道不支持 OpencvSharp 版本 2.4.8.20140523(任何 CPU 构建)

我正在开发需要一些图像处理的 Xamarin Android 项目。我尝试将 OpenCVSharp 的最新(任何 CPU 构建)版本集成到我的 Xamarin.Android 项目中。OpenCvsharp Github的主页说 OpenCVsharp 可以在任何支持单声道的平台上运行。但是,当程序集在编译时加载时,它返回 FileNotFoundException-“无法加载程序集 System.Drawing。有什么办法让它在单声道中为 android 工作?提前谢谢你

0 投票
2 回答
1957 浏览

c# - 使用 Marshal.Copy() 方法的访问冲突异常

我正在使用 .NET 编写一个简单的 OpenCV 应用程序,其目标是在一个简单的窗口上呈现网络摄像头流。

这是我用来执行此操作的代码:

但是现在我想在控制台上显示包含在 System.Drawing.Bitmap 对象中的像素缓冲区的内容(我知道 void* 本机类型包含在 Bitmap 对象中的 IntPtr 变量中)。因此,根据我下面的源代码来恢复 IntPtr 变量,我必须编写以下代码行(进入“不安全”上下文):

不幸的是,我在“复制”方法中有访问冲突异常!我不明白为什么。

有人可以帮助我吗?

非常感谢您的帮助。

0 投票
2 回答
354 浏览

image-recognition - 矩阵内的模式识别

假设我有这些盒子,其中一些是黑色的,一些是白色的。

在此处输入图像描述

图像显示了用黑框绘制的 U 形。现在假设我有一个 1 和 0 的矩阵(它可以是一个巨大的矩阵),如下所示:

它显示了大致形成图像中所示形状的零点。图像和矩阵只是示例。该图像是我们应该在其中绘制模式的软件的屏幕截图,然后需要将其定位在给定的矩阵中(在简单的文本文件中)。

我正在寻找的是如何开始这方面的指导,因为我从未编写过与模式识别相关的任何东西,这个问题显然与此有关。这就是我所要做的,给定一个模式,与 0 和 1 的矩阵匹配。我不认为我可以在几天内自己编写它,我正在用 c# vs 2013 编写代码,所以希望我能找到一些库,让我以最少的依赖项实现这一目标。谢谢

0 投票
0 回答
1031 浏览

opencvsharp - 无法加载 DLL 'opencv_highgui248':找不到指定的模块。(来自 HRESULT 的异常:0x8007007E)

我有一个简单的 OpenCvSharp 项目。我添加了兼容的引用并将 opencv dll 导入到项目中。系统设置为 x86,几乎所有内容都经过双重检查,但我仍然收到此错误。我搜索了 2 个小时并针对类似问题执行了所有建议,但仍未解决。请有人建议我解决我的问题。

0 投票
1 回答
6228 浏览

c# - Convert Bitmap to OpenCvSharp IplImage

I'm unfortunately struggling with this. I have a project that is mixed with Emgu and OpenCvSharp. Sounds odd but there are reasons.

At any rate, what I have is an EMGU.CV.Image that I'd like to use to populate an OpenCvSharp IplImage

I'm assuming this is possible, however I cannot wrap my head around it.

Relevant snippet of code (C#):

0 投票
3 回答
2139 浏览

c# - OpenCV:来自 Fundamental 矩阵和 SolvePnPRansac 的投影矩阵完全不同

作为我硕士论文的一部分,我正在探索运动中的结构。在阅读了H&Z book的部分内容、遵循在线教程并阅读了许多 SO 帖子之后,我得到了一些有用的结果,但我也遇到了一些问题。我正在使用 OpenCVSharp 包装器。所有图像均使用同一台相机拍摄。

我现在拥有的:


首先,我计算初始 3d 点坐标。我通过以下步骤做到这一点:

  1. 计算 Farneback 的密集光流。
  2. 使用 Cv2.FindFundamentalMat 和 RANSAC 查找基本矩阵
  3. 使用相机内在函数获取基本矩阵(此时我使用预先确定的内在函数)并将其分解:

    /li>
  4. 然后,我通过对点进行三角测量,然后将它们乘以投影矩阵(我尝试了 Cv2.TriangulatePoints 和 H&Z 版本,结果相似)并检查正 Z 值(从同质值):

    /li>
  5. 在这一点上,我应该有或多或少正确的 3D 点。3D 可视化看起来非常正确。

然后我通过再次使用密集光流和已知的先前投影矩阵计算每个新帧的 SolvePNP,我计算下一个 3D 点并将它们添加到模型中。同样,3D 可视化看起来或多或少是正确的(此时没有捆绑调整)。

由于我需要为每个新帧使用 SolvePNP,因此我首先通过使用基本矩阵为前 2 个图像计算的那个来检查它。从理论上讲,投影矩阵应该与使用初始算法计算的矩阵相同或几乎相同 - 我使用第二张图像中的初始 3D 点和相应的 2D 点。但不一样。

这是通过分解基本矩阵计算得出的:

这是我从 SolvePnPRansac 得到的:

它们都看起来像正确的投影矩阵,但它们是不同的。

对于那些阅读整篇文章的耐心的人,我有 3 个问题:

如果需要更多代码,请告诉我,我将编辑问题。

谢谢你!

0 投票
1 回答
817 浏览

c# - 我想在 opencvsharp 的视频文件中获取 (+1) 帧

我想使用 absdiff() 函数来跟踪对象,我必须得到第二帧。

例如,我使用 capture.queryframe(2134) 获取第 2134 帧。我需要获得第 2135 帧。

我怎样才能做到这一点?

谢谢。

0 投票
2 回答
2263 浏览

c# - 识别图像中的 visio 形状

交付 SCADA 解决方案时,我们经常获得结构化控制图(如下所示的类似流程图)中指定的最终用户规范,这些规范通常以 PDF 格式或图像形式提交。

为了在 C# 中访问这些,我希望使用其中一个 OpenCV 库。

我正在研究模板识别,但开始输入机器学习算法来教它识别已知的框和箭头的特定形状似乎不合适。

我看过的库有一些多边形函数。但是,从下面的示例中可以看出,当元素之间没有间距时,系统会将整个事物视为一个大多边形的危险。

注释可以是任何 90 度旋转,我想使用 OCR 识别它们以及矩形的内容。

我在这方面没有任何经验,现在应该很明显了,所以我希望有人能指出我合适的兔子洞的方向。如果有多种方法,则选择数学最少的方法。

更新: 这是我正在谈论的图像类型的一个示例。 SCD 绘图示例

要解决的问题是:

  • 用单元格中的文本识别红色矩形 (OCR)。
  • 箭头的标识,包括方向和端点注释。行类型,如果可能的话。
  • 组件的模板匹配。
  • 如果模板匹配失败,则回退到某个折线实体或其他东西。