加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

openCV错误:断言失败(scn == 3 || scn == 4)

发布时间:2020-12-16 05:58:23 所属栏目:百科 来源:网络整理
导读:在最后一帧,我一直在读取和写入一个视频帧时,发生了断言失败的错误.错误只显示在最后一帧,不知道为什么.看到这个答案 here,这建议给waitkey,我的代码已经有等待键了. 我的简单代码如下 int main(){ CvCapture *capture=cvCaptureFromFile("C:vidop.mp4")
在最后一帧,我一直在读取和写入一个视频帧时,发生了断言失败的错误.错误只显示在最后一帧,不知道为什么.看到这个答案 here,这建议给waitkey,我的代码已经有等待键了.

我的简单代码如下

int main()
{
  CvCapture *capture=cvCaptureFromFile("C:vidop.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:framesimage%u.jpg",p);    
    imwrite(buffer,current_frame);
    p++;

     waitKey(1);
   }
   return 0;
}

有人请帮忙

解决方案:我在读取每个文件之后添加了一个检查,

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

解决方法

每次查询后,您需要检查框架是否为空

喜欢

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

你会得到这样一个错误,因为你尝试在最后一帧之后将一个空的Mat转换为灰度,所以如果frame为空,则退出循环.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读