opencv中一些关于摄像头的操作

1.首先是读入一个视频文件

CvCapture结构体(让程序一帧一帧的读取,每得到一帧后,指针就转到下一帧的位置)

#include<stdio.h>
#include<cv.h>
#include<highgui.h>
using namespace std;
using namespace cv;
int main()
{
    char filename[100]="F:\\movie\\a.mkv";
IplImage*img;

 CvCapture*capture=cvCreateFileCapture(filename);
 while(1)
 {
img= cvQueryFrame(capture);
cvNamedWindow("img",1);
cvShowImage("img",img);
 if(cvWaitKey(33)==27)//如果没有这个不显示图像
    break;
 }
cvReleaseCapture(&capture);
cvDestroyWindow("img");
return 0;
}


cvWaitKey()不断的刷新图像,刷新图像的频率在()中,返回值为当前键盘按键值。27是Esc键的值, if(cvWaitKey(33)==27)
    break;这句话表明如果按了Esc图像的读取就结束。




2.如果直接从摄像头读取

int main()
{
       // char filename[100]="F:\\movie\\a.mkv";
IplImage*img;

 CvCapture*capture=cvCreateCameraCapture(-1);//只有这个地方换了
 while(1)
 {
img= cvQueryFrame(capture);
cvNamedWindow("img",1);
cvShowImage("img",img);
 if(cvWaitKey(33)==27)
    break;
 }
cvReleaseCapture(&capture);
cvDestroyWindow("img");
return 0;
    

}


3.保存摄像头读取的连续的帧


int main()
{
        char filename[100]="F:\\movie\\out.mkv";//不用自己创建,直接会生成
IplImage*img;

 CvCapture*capture=cvCreateCameraCapture(-1);
 CvSize size=cvSize((int)cvGetCaptureProperty(capture,CV_CAP_PROP_FRAME_WIDTH),  
      (int)cvGetCaptureProperty(capture,CV_CAP_PROP_FRAME_HEIGHT));
 CvVideoWriter*writer=cvCreateVideoWriter(filename,CV_FOURCC('M','J','P','G'),  
        30,size);
 while(1)
 {
img= cvQueryFrame(capture);
cvNamedWindow("img",1);
cvShowImage("img",img);
 if(cvWaitKey(33)==27)//如果没有这个不显示图像
    break;
 
 cvWriteFrame(writer,img);
 }
cvReleaseCapture(&capture);
cvDestroyWindow("img");
return 0;
    

}



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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值