opencv读取摄像头或视频文件

程序例程:

#include"stdio.h"

#include"opencv2/opencv.hpp"

using namespace cv;


int main(int argc,char**argv)
{
 Frame_Method frame_method;
 CvCapture *capture;
 IplImage *frame;
 capture = cvCaptureFromCAM(-1);//摄像头
 //capture = cvCaptureFromAVI("d:/avi/1234.avi");//视频文件
 if(!capture)
  return -1;
 cvNamedWindow("image");
 if(capture)
 {
  for(;;)
  
   frame = cvQueryFrame(capture);
   if(!frame)
    break;
   cvShowImage("image",frame);  
   char key = cvWaitKey(1);
   if(key == 27)
    break;
  }

 }

//cvReleaseImage(&frame);//这句话加上是不正确的
 cvReleaseCapture(&capture);
 cvDestroyWindow("image");
 return 0;
}

 

原因:

cvQueryFrame函数
从摄像头或者文件中抓取并返回一帧
IplImage* cvQueryFrame( CvCapture* capture );
capture:视频获取结构。
函数cvQueryFrame从摄像头或者文件中抓取一帧,然后解压并返回这一帧。这个函数仅仅是函数cvGrabFrame和函数cvRetrieveFrame在一起调用的组合。返回的图像不可以被用户释放或者修改。抓取后,capture被指向下一帧,可用cvSetCaptureProperty调整capture到合适的帧。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值