gpt4 book ai didi

c++ - 无法在 OpenCV 2.4.7 中从 Cam 捕获视频

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:55:14 25 4
gpt4 key购买 nike

这是我从 here 复制/粘贴的代码:

#include "opencv2/opencv.hpp"

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(30) >= 0) break;
}
// the camera will be deinitialized automatically in VideoCapture destructor
return 0;
}

但是我得到这个错误:


OpenCV error: Assertion failed (scn==3 || scn==4) 
in unknown function, file ..\..\..\..\opencv\modules\imgproc\src\color.cpp, line 3737

我正在使用 Windows 7 x64、Visual Studio 2008、OpenCV 2.4.7

可能是什么问题?

编辑:

有时有效,有时无效。

编辑 2:

我将 VideoCapture cap(0); 编辑为 cv::VideoCapture cap(0); 然后,我重建我的解决方案并运行它。第一次成功了,我尝试第二次运行,它给了我同样的错误。

编辑 3:

我什至编辑过for(;;):

for(;;)
{
Mat frame;
cap >> frame; // get a new frame from camera
imshow("edges", frame);
if(waitKey(30) >= 0) break;
}

这次我收到另一个错误:


OpenCV error: Assertion failed (size.width>0 && size.height>0) 
in unknown function, file ..\..\..\..\opencv\modules\highgui\src\window.cpp, line 261

我想问题出在 imshow 上。

最佳答案

我遇到了类似的问题。我通过将 cap >> frame 之后的所有内容放入 if 语句中来解决它:

 for(;;)
{
Mat frame;
cap >> frame; // get a new frame from camera
if (!frame.empty()) {
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(30) >= 0) break;
}

关于c++ - 无法在 OpenCV 2.4.7 中从 Cam 捕获视频,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20604132/

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