我正在使用cvQueryframes
获取视频帧,但在avi
文件的几个视频中,我得到了:
Unhandled exception at 0x715c14f0 0xC0000005:
Access violation reading location 0x02f509f0.
我正在使用带有OpenCV 2.4.5
和Qt5
CvCapture* cap= cvCaptureFromFile(file);
frame = cvQueryFrame(capture);
答案 0 :(得分:0)
这可能有多种原因,链接错误的文件名,找不到编解码器等。尝试在打开文件之前调试printf以查看文件名是否正确也检查cap是否为NULL。你可以试试这样的东西
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;
}