gpt4 book ai didi

c++ - OpenCV + WebCam 导致崩溃(写入时内存访问冲突)

转载 作者:行者123 更新时间:2023-11-28 07:46:26 26 4
gpt4 key购买 nike

最近安装了 OpenCV 2.4.3 尝试做一些视频捕获和对象区分。但遗憾的是,每次尝试通过网络摄像头捕获视频都会导致内存访问冲突。

我正在使用 Visual Studio 2010 (Win 7 x86) 和网络摄像头“A4 Tech USB2.0”。起初我认为可能问题出在相机本身,但后来我尝试使用 videoInput.h 库从相机获得任何响应,仍然没有结果。 (其他应用程序如 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 和窗口本身的生成属性的控制台(看起来是灰色背景)。和内存访问冲突错误。

最佳答案

经过一番思考和测试,找到了解决方案。

似乎,DirectShow 上的 DirectVobSub 过滤器以某种方式阻止了我以编程方式访问我的相机(通过 OpenCV 和 VideoInput 库)。每次我运行我的程序并访问我的相机时,它都会创建一个新的自身实例,这会导致访问内存冲突)。从我的电脑上卸载后,代码开始工作。

关于c++ - OpenCV + WebCam 导致崩溃(写入时内存访问冲突),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14801312/

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