原始会报错
Mat src;
// use default camera as video source
VideoCapture cap(0);
// check if we succeeded
if (!cap.isOpened()) {
cerr << "ERROR! Unable to open camera\n";
return;
}
// get one frame from camera to know frame size and type
cap >> src;
// check if we succeeded
if (src.empty()) {
cerr << "ERROR! blank frame grabbed\n";
return;
}
bool isColor = (src.type() == CV_8UC3);
//--- INITIALIZE VIDEOWRITER
VideoWriter writer;
int codec = VideoWriter::fourcc('H', '2', '6', '4'/*'P','I','M','1'*//*'M', 'J', 'P', 'G'*/); // select desired codec (must be available at runtime)
double fps = 30.0; // framerate of the created video stream
string filename = "./h264.avi"; // name of the output video file
writer.open(filename, codec, fps, src.size(), isColor);
// check if we succeeded
if (!writer.isOpened()) {
cerr << "Could not open the output video file for write\n";
return;
}
//--- GRAB AND WRITE LOOP
cout << "Writing videofile: " << filename << endl
<< "Press any key to terminate" << endl;
int frame_cnt = 0;
for (;;)
{
// check if we succeeded
if (!cap.read(src) || frame_cnt > 60) {
cerr << "ERROR! blank frame grabbed\n";
break;
}
// encode the frame into the videofile stream
writer.write(src);
frame_cnt += 1;
// show live and wait for a key with timeout long enough to show images
imshow("Live", src);
if (waitKey(5) >= 0)
break;
}
- 报错内容
解决方式
根据提示的错误内容去https://github.com/cisco/openh264/releases网站去下载对应的openh264-1.8.0-win64.dll文件放在当前项目文件夹下,再次执行即可解决