问题标签 [opencvdotnet]
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.
vb.net - 错误:基于opencv的应用开发
我使用 Windows 控制台应用程序 vs2008 完成了我的 opencv 代码,而不是将其作为 dll 并在 Windows 应用程序 vb.net 中使用。运行时出现此错误。我没有得到我做错的地方。错误是这样的
aranga.dll 是我的 dll 有我的编码 opencv 编码部分。请帮我解决这个问题。提前致谢。
c - OpenCV:cvHoughCircles 使用错误
我正在使用 cvHoughCircles 在下图中找到两个白色椭圆:
我首先使用阈值来定位白色区域,然后使用霍夫变换。但是输出不正确,如下所示:
我无法理解发生了什么?为什么它检测到 3 个圆圈,为什么只有一个被正确检测到?有什么建议么?
下面是我的代码:
编辑:
由于我对霍夫变换没有得到满意的结果,我愿意采取其他方式。我可以假设图中每个白色斑点的大小相同(大小已知),并且斑点之间的距离也是已知的。有没有一种不平凡的方法可以找到一条垂直线(切线)接触左侧白色斑点的左侧?一旦我知道了这个切线,我就知道了边界位置,然后我将在 x=(这个位置 + 半径(已知))处画一个圆,y = 这个位置。我可以使用一些重要的方法找到这样的 x 和 y 坐标吗?
解决了,通过如下改变:
这是输出:
matlab - OpenCV MATLAB:如何绘制具有特定强度分布的线?
下面是图像中线条的任意手绘强度分布:
任务是画线。轮廓可以近似为圆弧或椭圆弧。这是我为相机校准所做的。由于我没有实际的工业相机,我试图模拟校准所需的校正。
这个问题可以改写,因为我想要像素值,它会遵循类似于上面的图。我想使用程序(最好使用 opencv)来执行此操作,而不是手动输入这些值,因为我一行中有数千个像素。
一个算法/伪代码就足够了。另请注意,我没有任何实际的强度配置文件,否则我会阅读这些值。
什么时候会遇到这样的情况?
假设您从相机拍摄照片(假设全白),您的对象被放置在桌子上,相机在垂直方向正上方。与在边缘反射的光相比,从相机垂直向下射到图片中心的光的强度会更强。您测量图像中任何一条线的像素值,您会发现如上图所示的强度曲线。由于我暂时没有相机,我想模仿这种情况。如何做到这一点?
matlab - 视频中运动物体的速度测量算法
您使用智能手机中配备的相机拍摄了移动汽车的视频。该视频的分辨率非常高,并假设已完成一些无损编码。(显然尺寸会很大)。它以 60fps 的速度播放。从视频中测量汽车的真实速度有哪些可能的方法?(可能并非所有情况都存在完美的解决方案,因此我愿意在特定条件下进行一些合理的假设,如果有的话。)。
如果这是不可能的,我的下一个目标是对视频中的静止物体进行汽车速度测量。
编辑:
在我的情况下,相机总是静止的,汽车从左到右移动,并以恒定速度移动。
我已经看过什么方法了
随着汽车的移动,我以已知的速度在摄像机前移动一个物体(参考物体)。然后视频包含两个移动对象,一个是已知的,另一个是未知的。通过适当的校准,我可以找到汽车的速度。但我正在寻找一种无需移动参考对象的解决方案。
image-processing - OpenCV:在 x 轴上查找峰值位置的优化方法
要检测下图中峰值的位置(在 x 轴上)
如果图像是垂直的,我会应用 CvMinMax 来定位峰值。但由于这里是水平的,我面临着困难。有没有办法可以使用 CvMinMax 来定位这个峰值?(我不想旋转图像)
作为最后一个选项,我必须搜索每一列,我不想这样做,因为这将非常昂贵。有没有优化的方法来搜索这些峰值?
opencv - CvMat 和 Imread 与 IpImage 和 CvLoadImage
使用 OpenCv 2.4
我有两个加载图像的选项:
哪个更好用?我尝试将两者混合并最终出现段错误。
image - OpenCv:在 for 循环中旋转图像时应用程序挂起
以下代码给出了段错误和一些时间停止/挂起并且永远不会工作。
但以下工作非常好。
cvrotate是一个正在旋转图像的函数,旋转后的图像正在被opencv函数显示出来。
为什么是waitkey(); 这里需要吗?我知道只有在 CVrotate 完成其工作后才应调用显示。同样,我假设下一次迭代在显示结束时开始,而不是在那之前。请赐教。
image - OpenCV:使用 OpenCV 合并两个图像
使框 2 的大小等于框 1 的最佳方法是什么,以便 CvCopy(); 可以应用:
编辑:
也许我没有正确地提出这个问题。所以我重新措辞。给定图像 2(如上所示),我想将其转换为如下所示:
基本上我必须在它上面添加一个黑色边框。调整大小将不起作用,因为我的图像会失真。换句话说,我必须在图像周围的定义厚度中添加零。
此外,虽然显示为空,但这些图像(框)内部可能有一些对象,我没有显示。
opencv - 处理实时数据,绕过 CvloadImage
这是我们使用 Opencv 显示和处理图像的方式:
现在你能帮我实现我的目标,如下所述:
请注意,我在第二个代码片段中没有使用任何硬盘读/写操作,如下所示:
基本上我正在处理实时场景,因此我绕过了耗时的cvLoadImage
. 显然没有将数据保存到硬盘中,我的整个数据仍然在Buffer B
. 这节省了我的时间,这对我的应用程序至关重要。
注意:事实是我将对 进行更多处理Buffer B
,例如应用cvminmaxloc
等。但是所有这些功能都需要从磁盘加载的图像,而不是像我这样的缓冲区。
有人可以为我指明正确的方向,以实现使用缓冲区而不是存储在硬盘中的图像的目标吗?我在理解 openCV 功能时犯了一些错误吗?
更新:
下面的建议可imdecode
用于从缓冲区读取图像。如上所述,实际上我将使用 OpenCv 函数对图像进行处理,CVMinMaxLoc
例如
现在我可以把Buffer
作为第一个参数而不是 Image incvThreshold( )
吗?如果不是,那么使用 openCv 函数处理Buffers
(包含像素值)的替代方法是什么?如果没有使用缓冲区的直接方法,那么实现此目标的间接方法是什么?解决方法是什么?
简而言之,我不想在进行任何处理之前将数据带到硬盘上。
c# - 具有特定编解码器的 Emgu CV VideoWriter
我需要使用 Emgu CV 库的 VideoWriter 类来实时捕获屏幕。
现在的问题是文件大小......所以,我必须使用特定的编解码器。
到目前为止,我已经尝试过我发布的代码:
// VideoWriter原型:VideoWriter(String fname, Int32 comprescode, Int32 pfs, Int32 width, Int32 height, Boolean isColor);
VideoWriter captureOutput;= new VideoWriter(@"test.avi", -1, 1, width, height, true);
结果我得到了视频压缩对话框,我有机会选择编解码器。
我选择了 Microsoft Windows Media Video 9 编解码器,看来我需要使用此编解码器来解决文件大小问题。
我将在我的程序中选择它(在源代码中),而不是每次运行我的程序时都选择它。
有一些编解码器代码可以与 CvInvoke.CV_FOURCC('I', 'Y', 'U', 'V') 或其他代码一起应用,但我对 Windows Media Video 9 没有任何想法。
我只是想知道是否有人面临像我遇到的同样的问题。
任何想法都受到高度赞赏。谢谢~