最近安装了 OpenCV 2.4.3 来尝试做一些视频捕捉和对象区分。但遗憾的是,每次通过网络摄像头捕获视频的尝试都会导致内存访问冲突。
我正在使用 Visual Studio 2010 (Win 7 x86) 和网络摄像头“A4 Tech USB2.0”。首先我认为问题可能出在相机本身,但后来我尝试使用videoInput.h
lib 从相机获得任何响应,仍然没有结果。(Skype 等其他应用程序可以看到(并使其工作)没问题)。
这是一个代码(几乎是书本上的):
<pre>
#include "cv.h"
#include "highgui.h"
#include "stdlib.h"
#include "stdio.h"
int main(int argc, char* argv[])
{
CvCapture* capture = cvCreateCameraCapture(CV_CAP_ANY); //cvCaptureFromCAM( 0 );
assert( capture );
double width = cvGetCaptureProperty(capture, CV_CAP_PROP_FRAME_WIDTH);
double height = cvGetCaptureProperty(capture, CV_CAP_PROP_FRAME_HEIGHT);
printf("[i] %.0f x %.0f\n", width, height );
IplImage* frame=0;
cvNamedWindow("capture", CV_WINDOW_AUTOSIZE);
printf("[i] press Esc for quit!\n\n");
if(capture != NULL)
{
while(true)
{
frame = cvQueryFrame( capture ); //it crashes here all the time
cvShowImage("capture", frame);
char c = cvWaitKey(35);
if (c == 27)
{
break;
}
}
}
cvReleaseCapture( &capture );
cvDestroyWindow("capture");
return 0;
}
</pre>
阅读具有相同问题的其他主题并尝试解决一些问题:(添加捕获之间的间隔cvWaitKey(35)
,添加检查捕获设备是否真的存在if (capture != NULL)
)但仍然无法理解为什么会继续发生这种情况。
更新:我最终得到的是带有 OpenCVwindow 和窗口本身的生成属性的控制台(看起来是灰色背景)。和内存访问冲突错误。