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

  • 相关阅读:
    简单内存泄漏检测方法 解决 Detected memory leaks!
    C++&&XML; “未使用调试信息生成二进制文件” vs assist
    H3C ACL地址转换配置等
    oracle 数据库表导入导出
    内存的使用与windows 内存监控
    Java Development in Flash Builder 4 Standalone
    flex builder
    美国化妆品
    vs 主题
    Boost lib linker error Visual C++
  • 原文地址:https://www.cnblogs.com/oldhuang/p/10194510.html
Copyright © 2011-2022 走看看