在用opencv实现从视频中读取图片,并保存下来,但是获取的图片都是黑色的!!!

在尝试使用OpenCV从avi视频中每间隔两帧读取并保存图片时,发现保存下来的图片全部是黑色。代码包括了cvCaptureFromAVI初始化,cvGrabFrame和cvRetrieveFrame获取帧,cvShowImage显示帧,以及cvSaveImage保存图片等步骤。问题可能出在视频帧的处理或保存环节。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

CvCapture *capture = NULL;
 IplImage *frame = NULL;
 
 char *AviSavePath ;//图片保存的位置
 AviSavePath = "E:\\53827";
 const int jiange = 1;//间隔两帧保存一次图片
 capture = cvCaptureFromAVI("E:\\53827.avi");
  cvNamedWindow("AVI player",1);
 int count_tmp = 0;//计数总帧数
 char tmpfile[100]={'\0'};
 while(true)
 {
  if(cvGrabFrame(capture))
  {
   if (count_tmp % jiange == 0)
   {
    frame=cvRetrieveFrame(capture);
    cvShowImage("AVI player",frame);//显示当前帧
    sprintf(tmpfile,"%s//%d.jpg",AviSavePath,count_tmp/jiange);//使用帧号作为图片名
    cvSaveImage(tmpfile,frame);
   }    
   if(cvWaitKey(10)>=0) //延时
    break;
   ++count_tmp;
  }
  else
  {
   break;
  }
 }
 cvReleaseCapture(&capture);
 cvDestroyWindow("AVI player");
 std::cout<<"总帧数" << count_tmp << std::endl;
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值