gpt4 book ai didi

c++ - OpenCV C++ 视频捕获似乎不起作用

转载 作者:搜寻专家 更新时间:2023-10-30 23:49:38 25 4
gpt4 key购买 nike

我使用的是 Mac OS X 10.6 机器。我使用 Xcode 及其 GCC 编译器从源代码编译了 OpenCV 2.1 x64。

我在使用 OpenCV 的 C++ 视频阅读功能时遇到问题。这是我正在使用的简单测试代码(直接来自 OpenCV 文档):

#include "cv.h"
#include "highgui.h"

using namespace cv;

int main(int, char**)
{
VideoCapture cap(0); // open the default camera
if(!cap.isOpened()) // check if we succeeded
return -1;

Mat edges;
namedWindow("edges",1);
for(;;)
{
Mat frame;
cap >> frame; // get a new frame from camera
cvtColor(frame, edges, CV_BGR2GRAY);
GaussianBlur(edges, edges, Size(7,7), 1.5, 1.5);
Canny(edges, edges, 0, 30, 3);
imshow("edges", edges);
if(waitKey(200) >= 0) break;
}
// the camera will be deinitialized automatically in VideoCapture destructor
return 0;
}

程序编译正常,但当我尝试运行它时,我看到网络摄像头上的绿灯亮了几秒钟,然后程序退出并显示错误消息:

OpenCV Error: Bad flag (parameter or structure field) (Unrecognized or unsupported array type) in cvGetMat, file /Users/mark/Downloads/OpenCV-2.1.0/src/cxcore/cxarray.cpp, line 2476
terminate called after throwing an instance of 'cv::Exception'
what(): /Users/mark/Downloads/OpenCV-2.1.0/src/cxcore/cxarray.cpp:2476: error: (-206) Unrecognized or unsupported array type in function cvGetMat

在 Debug模式下,矩阵在 cap >> frame 行之后似乎仍然是空的。

当我尝试从视频文件或图像中捕捉时,我遇到了类似的行为,所以这不是相机造成的。你觉得哪里不对?我能做些什么来完成这项工作?

编辑:我想补充一点,如果我使用 C 功能,一切正常。但如果可以的话,我想坚持使用 C++。

谢谢

最佳答案

我遇到过同样的问题。当我使用C特性时,有时也会出现类似的问题。从 C 代码的错误消息来看,我认为这是因为相机得到了一个 NULL 帧。所以我觉得可以这样解决:

do
{
capture>>frame;
}while(frame.empty());

这样它就可以在我的机器上运行了。

关于c++ - OpenCV C++ 视频捕获似乎不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3940780/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com