Qt使用opencv呼叫攝像頭錄製視訊並儲存檔案
阿新 • • 發佈:2019-02-15
首先需要說的是我的筆記本攝像頭是WebCam SCB-0355N,因為按照網上的方法錄製的視訊一直無法開啟,後來想到可能跟攝像頭錄製格式有關,於是用系統自帶的錄製軟體錄製並儲存,發現儲存的是.wmv檔案,編碼格式是WMV2,真的是恍然大悟啊!!把
CV_FOURCC('M','J','P','G')
改為
CV_FOURCC('W','M','V','2')
就可以了,折騰了一天!
關鍵程式碼
cv::VideoCapture m_cap;
m_cap.open(0);
assert(m_cap.isOpened());
int rate = m_cap.get (CV_CAP_PROP_FPS);
cv::Mat frame;
m_cap>>frame;
cv::VideoWriter videowriter;
videowriter.open("test.wmv",CV_FOURCC('W','M','V','2'),30,cv::Size(frame.cols,frame.rows));
assert(videowriter.isOpened());
char keycode;
while ((keycode = cvWaitKey(30))) {
if (keycode == 27 ) {
break;
}
if (!m_cap.grab()) {
break;
}
m_cap>>frame;
videowriter<<frame;
}
videowriter.release();
如果大家遇到錄製視訊無法開啟的情況,除了檢查程式碼之外,記得考慮下攝像頭的編碼格式。