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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM