最近安裝了OpenCV 2.4.3以嘗試進行一些視頻捕獲和對象區分。但令人遺憾的是,每次通過網絡攝像頭捕捉視頻的嘗試都會導致內存訪問違規。OpenCV + WebCam導致崩潰(寫入期間內存訪問衝突)
我使用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和窗口本身(灰色背景似乎)的屬性。和內存訪問衝突錯誤。
那些'**'代碼的一部分在 ** ** frame = cvQueryFrame(capture); **'? – lucasmrod 2013-02-10 18:58:16
不,對不起,他們不是... – GreUJnik 2013-02-10 19:10:22