c++/opencv/拍照录像功能

任务:在ubuntu下利用c++编写opencv代码实现拍照和录像功能。

涉及的知识点:

1、Mat类

2、按键检测

3、图片批量存储

直接给代码:

#include <opencv2/opencv.hpp>
#include <string>
using namespace cv;
int main(){
VideoCapture capture(0);
int key;
int i=0;    //图片数
int j=0;    //视频数
char pName[100];//图片文件名
char vName[100];//视频文件名    
while(1){
    Mat Frame;
    namedWindow("摄像头");
    capture>>Frame;
    if((key=waitKey(5))!=-1){
        if(key=='p'){
            sprintf(pName,"photo/%d.jpg",i);
            imwrite(pName, Frame);  
            while(key==waitKey(5)==-1);
            i++;
        }
        if(key=='v'){
            destroyWindow("摄像头");
            sprintf(vName,"video/%d.avi",j);    
            VideoWriter writer(vName, CV_FOURCC('M', 'J', 'P', 'G'), 25.0, Size(640, 480));
            do{   
            capture>>Frame;
            writer<<Frame;
            imshow("录像",Frame);
            }while((key=waitKey(5))==-1);
            j++;
            destroyWindow("录像");
        }
    }
    imshow("摄像头",Frame);
    waitKey(10);
    }
return 0;

其中按键p为拍摄照片,然后将照片存储到photo文件夹中。

按键v为录制视频,再按其他按键可以停止录制,文件存储到video文件夹中。

文件多存储利用了sprintf()函数:sprintf(pName,"photo/%d.jpg",i);%d占位符,每存储一张图片i加一。

posted @ 2018-12-29 11:00  小小白爱学习~  阅读(4414)  评论(0编辑  收藏  举报