openCV Erreur: échec de l'Assertion (scn == 3 || scn == 4)

Je vais avoir échec de l'Assertion d'erreur à la dernière image , lors de la lecture et de l'écriture d'une vidéo image par image. Les erreurs ne montre que sur la dernière image, je ne sais pas pourquoi. vu cette réponse ici, ce qui suggère de donner waitkey, mon code déjà attendre de la clé sur elle.

mon simple code est comme suit

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;
}  

Quelqu'un s'il vous plaît aider

Solution: j'ai ajouté une case juste après la lecture de chaque fichier-

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

OriginalL'auteur MMH | 2014-02-19