zoukankan      html  css  js  c++  java
  • 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加一。

  • 相关阅读:
    问题:贴友关于CSS效果的实现
    建站小记
    PHP基本语法的小结
    算法的想法
    算法导论
    算法真的复杂
    快速排序-移动单边指针
    如何实现算法
    c++ constructor, copy constructor, operator =
    阶段性总结
  • 原文地址:https://www.cnblogs.com/oldhuang/p/10194510.html
Copyright © 2011-2022 走看看