oldhuang

任务:在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加一。

分类:

技术点:

相关文章:

  • 2022-12-23
  • 2022-12-23
  • 2021-07-11
  • 2021-09-27
  • 2021-06-20
  • 2022-02-09
  • 2022-12-23
  • 2021-12-27
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2021-03-31
  • 2022-12-23
  • 2021-10-17
相关资源
相似解决方案