我是靠谱客的博主 认真时光,最近开发中收集的这篇文章主要介绍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;
    

}



最后

以上就是认真时光为你收集整理的opencv中一些关于摄像头的操作的全部内容,希望文章能够帮你解决opencv中一些关于摄像头的操作所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(41)

评论列表共有 0 条评论

立即
投稿
返回
顶部