我最近安装了OpenCV 2.4.7,并将其配置为我的Visual 2010终极版.我甚至测试了一个显示图像的代码..。
#include "opencv2/highgui/highgui.hpp"
#include "iostream"
using namespace cv;
using namespace std;
int main()
{
Mat im = imread("d:/lena.jpg");
if (im.empty())
{
cout << "Cannot load image!" << endl;
return -1;
}
imshow("Image", im);
waitKey(0);
}它可以工作,但是当我尝试使用给定这里的视频拍摄代码时,它会出现一个错误。
#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;
}MyNewOpenCv1.exe中0x75dc812f处的未处理异常: Microsoft C++异常:cv::内存位置0x0019f6d8处的异常
我不知道安装是否有问题。我对OpenCV非常陌生,所以如果任何熟悉这个错误的人都能为我修复这个错误,并且给我解释为什么会发生这种错误,那么这方面的指导将是很棒的。
希望等待你的答案-乔纳森-
发布于 2013-11-14 11:51:02
试着取代
cap >> frame;通过以下方式:
while (frame.empty()) {
cap >> frame;
}有时opencv相机API为前几帧提供了垃圾,但过了一段时间,一切都正常了。
您可能希望将该循环限制为固定的迭代次数,以避免无限地运行。
发布于 2014-12-10 08:15:47
下面的代码行仅用于边缘检测。
cvtColor(frame, edges, CV_BGR2GRAY);
GaussianBlur(edges, edges, Size(7,7), 1.5, 1.5);
Canny(edges, edges, 0, 30, 3);因此,如果您对视频捕获感兴趣,那么使用下面的代码:
#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;
for(;;)
{
Mat frame;
cap >> frame; // get a new frame from camera
imshow("display", frame);
if(waitKey(30) >= 0) break;
}
// the camera will be deinitialized automatically in VideoCapture destructor
return 0;
}要运行这段代码,您应该在VS中设置库路径,也应该在VS.It中设置dll链接器选项才能工作!
https://stackoverflow.com/questions/19976371
复制相似问题