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加一。

  • 相关阅读:
    如何为惠普笔记本ProBook 4431S清理电源风扇通风口灰尘
    office app之 Mail App 从新建到发布
    sublime_text3汉化,破解,安装Package_control支持中文显示
    poj3126prime+BFS
    android开发之欢迎界面
    poj 1151 离散化
    DbVisualizer 9 解决中文乱码问题
    RS232、RS422与RS485串口标准简介
    动态创建菜单和动态关联菜单项事件
    更改路径
  • 原文地址:https://www.cnblogs.com/oldhuang/p/10194510.html
Copyright © 2011-2022 走看看