1--打開攝像頭
關(guān)鍵代碼語(yǔ)句:
① VideoCapture cam(0);
② cam.read(img);
③ imshow("cam", img);
# include<opencv2/opencv.hpp>
# include<cstdio>
using namespace cv;
using namespace std;
int main(int argc, char *argv[]){
// 打開攝像頭
VideoCapture cam(0);
if (!cam.isOpened()){
cout << "cam open failed!" << endl;
getchar();
return -1;
}
cout << "cam open success!" << endl;
namedWindow("cam");
Mat img;
for(;;){
cam.read(img); // 讀幀
if (img.empty()) break;
imshow("cam", img); // 顯示每一幀
if (waitKey(5) == 'q') break; // 鍵入q停止
}
return 0;
}
2--保存攝像頭視頻
關(guān)鍵代碼:
①VideoWriter vw
②vw.open():fourcc指定編碼格式(常見編碼方式)、fps指定幀率、Size指定大小
③vw.write()
# include<opencv2/opencv.hpp>
# include<cstdio>
using namespace cv;
using namespace std;
int main(int argc, char *argv[]){
// 打開攝像頭
VideoCapture cam(0);
if (!cam.isOpened()){
cout << "cam open failed!" << endl;
getchar();
return -1;
}
cout << "cam open success!" << endl;
namedWindow("cam");
Mat img;
VideoWriter vw;
int fps = cam.get(CAP_PROP_FPS); // 獲取原視頻的幀率
if (fps <= 0) fps = 25;
vw.open("./out1120.avi",
VideoWriter::fourcc('X', '2', '6', '4'),
fps,
Size(cam.get(CAP_PROP_FRAME_WIDTH),
cam.get(CAP_PROP_FRAME_HEIGHT))
);
if (!vw.isOpened()){ // 判斷VideoWriter是否正常打開
cout << "videoWriter open failed!" << endl;
getchar();
return -1;
}
cout << "videoWriter open sucess!" << endl;
for(;;){
cam.read(img); // 讀幀
if (img.empty()) break;
imshow("cam", img); // 展示當(dāng)前幀
/*
這里可以添加對(duì)當(dāng)前幀的處理操作
*/
vw.write(img); // 保存當(dāng)前幀
if (waitKey(5) == 'q') break; // 鍵入q停止
}
return 0;
}
注:在Windows上執(zhí)行上述代碼可能會(huì)報(bào)以下錯(cuò)誤:
解決方法:在輸出的網(wǎng)址下載對(duì)應(yīng)版本的庫(kù)文件,放在執(zhí)行文件.exe的同級(jí)目錄即可,或者將該dll文件的路徑添加到系統(tǒng)變量path中。
文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-505004.html
?結(jié)果:生成的out1120.avi可以正常播放;文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-505004.html
到了這里,關(guān)于Opencv(C++)筆記--打開攝像頭、保存攝像頭視頻的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!