问题标签 [opencv]

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

c - Writing AVI files in OpenCV

There example on the net and code given in Learn OpenCv,Orielly.

After many attempts the out.avi file is written with 0 bytes. I wonder where i went wrong.

The following are the code i used...

0 投票
3 回答
13757 浏览

opencv - OpenCv Blob/轮廓标记

嗨,我已经为此工作了一段时间,但还没有好的解决方案。

我正在逐帧阅读视频并使用背景减法来识别存在移动的区域并使用 cvFindContours() 来获取移动对象的矩形边界。

假设程序保持简单,则只能有 2 个人。

这些物体以它们可以重叠的方式移动,并以一定的间隔转动和移开。

我怎样才能正确标记这个人 x 2。

cvFindContour 可以随机返回边界。对于 Frame1,Frame2,Frame3....FrameN

我最初可以比较矩形边界质心以正确标记人类。一旦人类重叠并离开,这种方法就会失败。

我试图跟踪原始 obj 的像素颜色(但是人类非常相似,并且某些区域具有相似的颜色,例如手、腿、头发),因此不够好。

我正在考虑使用 Image Statistic,例如:

CountNonZero(), SumPixels() Mean() Mean_StdDev () MinMaxLoc () Norm ()

以唯一区分这两个对象。我相信这将是一个更好的方法。

0 投票
2 回答
7635 浏览

c++ - 如何将 OpenCV IplImage 转换为 SDL_Surface?

我正在尝试编写一个程序,该程序需要一个SDL_Surface,将其转换为IplImage,使用 cvBlobsLib 查找 blob,将 blob 绘制为图像上的点,然后将输出转换IplImageSDL_Surface.

我快完成了:只有将IplImageback 转换为 anSDL_Surface尚未完成。这个 IplImage 有 3 个图像通道,每像素 8 位。我想我可以使用两个电话:

我目前正在尝试使用SDL_CreateRGBsurfaceFrom. 但是,我不知道 pitch、Rmask、Gmask 和 Bmask 的正确值是多少。(Amask 为 0,因为没有 Alpha 通道。)

任何人都可以通过解释如何做到这一点来帮助我吗?

谢谢!

编辑:例如,这是我尝试使用的代码:

(SDL 文档写道“Pitch 是表面扫描线的大小,以字节为单位,即 widthInPixels*bytesPerPixel。”)这会输出“Depth 8, nChannels 3, pitch 1920”并显示一个完全红色的图像。我认为一个解决方案是将我的 8 位图像转换为 24 位(每个通道 1 个字节),但我不知道该怎么做。有任何想法吗?

0 投票
6 回答
44670 浏览

opencv - 如何将 8 位 OpenCV IplImage* 转换为 32 位 IplImage*?

我需要将 8 位 IplImage 转换为 32 位 IplImage。使用来自整个网络的文档,我尝试了以下事情:

如您所见,我真的不知道自己在做什么。我很想知道,但如果我能正确完成这项工作,我会更喜欢它。感谢我得到的任何帮助!

0 投票
3 回答
3819 浏览

c++ - 为什么 OpenCV 拒绝 cvLoadImage("string.ext"),但接受 cvLoadImage(argv[1])?

如果我将指示的行替换为cvLoadImage("247.png")我得到一个空白窗口并且图像保持为零

如果我运行 exe 并给它 247.png 作为参数,那只是花花公子。如果我将“247.png”直接放入代码中并构建并运行它 Visual Studio 2008,它会失败。如果我从命令提示符构建并运行,它可以工作。

为什么是这样?我有点厌倦了继续前进而不把它弄下来。

0 投票
3 回答
3142 浏览

c++ - OpenCV 的奇怪行为

当我在 Visual C++ 2005 中编译我的 Windows 应用程序(称为 CrosslinesDetection)(包括计算机视觉库 OpenCV 1.1)时,我没有收到任何编译或链接错误,但是当我运行它时,它到达一个点并冻结,并且 Windows说:

该程序是一个常见的 C++ Windows 应用程序,带有两行 OpenCV 代码:

现在奇怪的行为是,如果我 - 包括 OpenCV 行,程序抛出异常 - 排除 OpenCV 行,程序正常工作。

我在另一个项目中使用了 OpenCV 库,没有任何问题。特别是,我为 GUI 制作了一个 C# 项目,并在后台编译为 DLL 的 C++ 项目。如果我为上述行创建这样的解决方案,我在执行过程中没有问题。

有谁知道,什么可能导致这个错误?

感谢您的帮助,斯特凡


感谢您的评论。

同时,我使用一个最小的项目进行测试。

我仍然不完全理解这个问题,但与此同时,我发现当我包含第三方库(来自 uEye)时会发生异常。

如果我在项目中使用来自 OpenCV 和 uEye 库的单个函数,则会发生异常。如果我使用来自 OpenCV 或 uEye 的单个函数,则不会引发异常。因此,这些与库似乎有些不兼容,或者还有另一个问题。但是,我不知道如何检测它。


不,不是在这一点上。在最小示例中,功能是不相关的。一个函数初始化相机,另一个函数初始化图像结构。


但也许错误在其他地方......

我在 Visual Studio 中创建了一个 C++ Windows 窗体应用程序。我在 Form1.h 文件中添加了一个按钮以及相应的功能:

我在 Form1.h 的开头添加了标题:

然后,我必须关闭预编译头选项,并且必须从 /clr:pure 更改为 /clr 选项才能成功编译和链接项目。

但是,然后我运行程序,上面提到的异常被抛出......

我想知道,如果我滥用 C++ Windows 窗体应用程序并且我不应该包含我的纯 C++ 代码,或者 OpenCV 或 uEye 库是否真的存在问题。

0 投票
3 回答
1928 浏览

c++ - 带有用 C 编写的库的智能指针

我将 C++ 与 OpenCV 库一起使用,这是一个库图像处理,尽管这与这个问题无关。目前我有一个设计决定要做。

OpenCV 是一个 C 库,其数据结构(例如 CvMat)被声明为结构。要创建它们,可以使用 cvCreateMat 之类的函数,要释放它们,请使用 cvReleaseMat 之类的函数。作为一名 C++ 程序员,我创建了一个特殊的cv_scoped类,当它超出范围时会自动调用 cvReleaseMat(如boost::scoped_ptr)。

我现在意识到的是,我希望我也可以使用auto_ptrand shared_ptrin case 。我只是觉得为自己cv_auto_ptrcv_shared_ptr班级编写代码是个坏主意,更不用说浪费时间了。所以我一直在寻找解决方案,我提出了三种可能性。

首先,我可以使用我已经创建的 cv_scoped 类。我将它重命名为cv_ptr然后使用智能指针,如下所示std::auto_ptr<cv_ptr>:不过,令人讨厌的是,我总是不得不取消引用两次:

我知道看起来我可以声明一个隐式转换,但实际上我不能——大多数 OpenCV 的函数都有参数 void*——所以不会调用隐式转换。我真的很想这样做,我不必做双重取消引用。

其次,我可以以某种方式覆盖operator delete。我不想覆盖全局运算符 delete,因为我只希望它适用于 CvMat(和其他一些)类型。但是,我无法更改库,因此无法添加operator delete到 CvMat 结构中。所以我不知道这将如何工作。

第三,我可以重写我自己的auto_ptr,scoped_ptrshared_ptr. 他们不是大班,所以不会太难,但我只是觉得这是糟糕的设计。如果我要这样做,我可能会按照以下方式做一些事情:

在我的情况下你会怎么做?请帮我解决这个问题。

0 投票
3 回答
5283 浏览

c++ - 在 Mac 上使用 FFMPEG 而不是 Quicktime 编译 OpenCV

我正在开发一些将在带有 OpenCV 和 FFMPEG 的 Linux 上运行的代码。我想使用我的 Mac 开发此代码,并且我需要 Mac 上的 FFMPEG 功能。

我已经能够像这样运行配置:

但是当我运行 make 我得到这个错误:

我尝试使用较新版本的 OpenCV 1.1pre1,但我得到了类似的错误,但符号不同。我使用与上面相同的 ./configure 。

如果我添加 --enable-shared=no 并且 OpenCV 将编译,但我的程序将无法运行......

关于如何使用默认的 --enable-shared 编译其中任何一个的任何建议?

0 投票
4 回答
26846 浏览

opencv - How to interpolate between data points?

I am currently developing a piece of software using opencv and qt that plots data points. I need to be able fill in an image from incomplete data. I want to interpolate between the points I have. Can anyone recommend a library or function that could help me. I thought maybe the opencv reMap method but I can't seem to get that to work.

The data is a 2-d matrix of intensity values. I want to create an image of some sort. Its a school project.

0 投票
2 回答
1735 浏览

c - Strange OpenCV Distance Transform Results

I'm trying to run a distance transform on a thresholded binary image in order to assist anomaly detection (my hope is that I can detect large changes around the edges of the object), however for some reason, upon running my Distance Transform script, I'm getting a strange banding type of effect. I tested something similar in the Distance Transform demo script in the samples directory, with the same results. One possible reason I came up with was that the distance was going beyond the 0-255 scale and therefore essentially being modulus'ed to keep it within the boundaries. Has anyone had any experience with this that could advise? I have posted images and code on my blog if that helps Thanks in advance, Ian