2013-05-15 42 views
0

我使用cvQueryframes获得的视频帧,但在avi文件的几个视频,我得到:检索视频帧 - 未处理的异常

Unhandled exception at 0x715c14f0 0xC0000005: 
    Access violation reading location 0x02f509f0. 

我使用Visual Studio 2010与OpenCV 2.4.5Qt5

CvCapture* cap= cvCaptureFromFile(file); 
frame = cvQueryFrame(capture); 
+4

你需要更具体。显示代码会有所帮助,因为看起来你正在做一些不安全的事情,比如读取数组边界之外的内容。 –

+0

请在你的问题中多加点数。其工资。 – 2vision2

+0

你的调试器说什么? – cmannett85

回答

0

这可能有多种原因,链接错误的文件名,编解码器未找到等尝试打开文件之前将调试printf,看看文件名是否正确也检查帽如果不是空值。你可以尝试这样的事情

int main(int argc, char*argv[]) 
{ 

    char *my_file = "C:\\vid_an2\\desp_me.avi"; 
    std::cout<<"Video File "<<my_file<<std::endl; 
    cv::VideoCapture input_video; 

    if(input_video.open(my_file)) 
    { 
     std::cout<<"Video file open "<<std::endl; 
    } 
    else 
    { 
     std::cout<<"Not able to Video file open "<<std::endl; 

    } 
    namedWindow("My_Win",1); 
    namedWindow("Segemented", 1); 
    Mat cap_img; 
    for(;;) 
    { 
     input_video >> cap_img; 
     imshow("My_Win", cap_img); 
      waitKey(0); 
    } 
    return 0; 
} 
+0

感谢您的好答案我会尝试让你知道,我已经检查是否文件为空或无论如何,非常感谢你 – Sivam

+0

请注意,您使用OpenCV的C++接口,而OP则使用C接口。 – zakinster

+0

是的,上面是C++接口。此外,我会建议检查是否有其他应用程序使用CAM。如果是,那么最好先关闭它。 – praks411