openCV Error: Assertion failed (scn == 3 || scn == 4)

匿名 (未验证) 提交于 2019-12-03 02:13:02

问题:

I am having Assertion failed error at the last frame , while reading and writing a video frame by frame. The errors only shows at the last frame, don't know why. saw this answer here, whichs suggests to give waitkey, my code already have wait key on it.

my simple code is as follows

int main() {   CvCapture *capture=cvCaptureFromFile("C:\\vid\\op.mp4");   if(capture==NULL)    {  printf("can't open video");    }    Mat frame, first_frame,current_frame;   char buffer[100];   int frame_count=1,p=1;   while(1)    {    /*Getting the current frame from the video*/     frame=cvQueryFrame(capture);     cv::cvtColor(frame,current_frame,1);   //saving current frame      sprintf(buffer,"C:\\frames\\image%u.jpg",p);         imwrite(buffer,current_frame);     p++;       waitKey(1);    }    return 0; }   

Anybody please help

Solution: I added a check just after reading every file as-

if(frame.empty()){     fprinf("cannot access frame");     return -1; } 

回答1:

You need to check your frame is empty or not after each query

Like

   frame=cvQueryFrame(capture);      if (frame.empty()) break; 

You are getting such an error because you are trying to convert an empty Mat to grayscale after last frame, so exit the loop if frame is empty.



标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!