生活随笔
收集整理的這篇文章主要介紹了
图像拼接(二):OpenCV同时打开两个摄像头捕获视频
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
使用OpenCV實現(xiàn)同時打開兩個USB攝像頭,并實時顯示視頻。如果未檢測有兩個攝像頭,程序會結(jié)束并發(fā)出“攝像頭未安裝好”的警告。這里推薦一個小巧的攝像頭視頻捕捉軟件:amcap,使用它可以方便的檢查每個攝像頭是否能正常工作。?
捕獲視頻:?
#include "opencv2/core/core.hpp"
#include "opencv2/highgui/highgui.hpp"
#include "opencv2/imgproc/imgproc.hpp"
#include<iostream>using namespace cv;
using namespace std;int main()
{VideoCapture cap1(2);VideoCapture cap2(1);bool stop(false);Mat frame1;Mat frame2;namedWindow("cam1", CV_WINDOW_AUTOSIZE);namedWindow("cam2", CV_WINDOW_AUTOSIZE);if (cap1.isOpened() && cap2.isOpened()){cout << "*** ***" << endl;cout << "攝像頭已啟動!" << endl;}else{cout << "*** ***" << endl;cout << "警告:請檢查攝像頭是否安裝好!" << endl;cout << "程序結(jié)束!" << endl << "*** ***" << endl;return -1;}//cap1.set(CV_CAP_PROP_FRAME_WIDTH, 640);//cap1.set(CV_CAP_PROP_FRAME_HEIGHT, 480);//cap2.set(CV_CAP_PROP_FRAME_WIDTH, 640);//cap2.set(CV_CAP_PROP_FRAME_HEIGHT, 480);cap1.set(CV_CAP_PROP_FOCUS, 0);cap2.set(CV_CAP_PROP_FOCUS, 0);while (!stop){if (cap1.read(frame1) && cap2.read(frame2)){imshow("cam1", frame1);imshow("cam2", frame2);imwrite("frame1.bmp", frame1);imwrite("frame2.bmp", frame2);//彩色幀轉(zhuǎn)灰度cvtColor(frame1, frame1, CV_RGB2GRAY);cvtColor(frame2, frame2, CV_RGB2GRAY);if (waitKey(1) == 27)//按ESC鍵{stop = true;cout << "程序結(jié)束!" << endl;cout << "*** ***" << endl;}}}return 0;
}
代碼說明:?
1、VideoCapture cap1(2);這句定義了一個視頻捕獲對象,參數(shù)為攝像頭的ID,0是第1個攝像頭,請確認(rèn)每個攝像頭的ID。?
2、下面兩句設(shè)置了捕獲視頻每幀圖像的分辨率和焦距,調(diào)用的是bool VideoCapture::set(int propId, double value)方法。此外,該方法還可設(shè)置視頻捕獲的幀率、亮度、對比度、飽和度、白平衡等各種信息。可參考OpenCV在線文檔。
cap1.set(CV_CAP_PROP_FRAME_WIDTH, 640);
cap1.set(CV_CAP_PROP_FRAME_HEIGHT, 480);
cap1.set(CV_CAP_PROP_FOCUS, 0);
cap2.set(CV_CAP_PROP_FOCUS, 0);?
3、if (cap1.read(frame1) && cap2.read(frame2)){}中read()方法的參數(shù)代表捕獲的幀圖像,如果捕獲成功,則返回True。?
總結(jié)
以上是生活随笔為你收集整理的图像拼接(二):OpenCV同时打开两个摄像头捕获视频的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。