0
点赞
收藏
分享

微信扫一扫

Opecv实战之视频的读取与存储


以为为函数内部内容…

视频的读

system("color F0");  //更改输出界面颜色
// 进行初始化,参数可以修改,0默认为本地摄像头,也可以把超参数选择为视频路径或者rtsp流
cv::VideoCapture video(0);
// 视频的状态为开
if (video.isOpened())
{
cout << "视频中图像的宽度=" << video.get(cv::CAP_PROP_FRAME_WIDTH) << endl;
cout << "视频中图像的高度=" << video.get(cv::CAP_PROP_FRAME_HEIGHT) << endl;
cout << "视频帧率=" << video.get(cv::CAP_PROP_FPS) << endl;
cout << "视频的总帧数=" << video.get(cv::CAP_PROP_FRAME_COUNT);
}
else
{
cout << "error!" << endl;
}

while (video.isOpened())
{
cv::Mat frame;
// 将图片重载入视频
video >> frame;
if (frame.empty())
{
break;
}
// 显示图片函数
cv::imshow("video", frame);
// 延时操作
cv::waitKey(30 );/// video.get(cv::CAP_PROP_FPS));
}
// 释放资源~
video.release();
// 销毁所有窗口
cv::destroyAllWindows();

视频的存储

cv::Mat src;
// use default camera as video source
cv::VideoCapture cap(0);
// check if we succeeded
if (!cap.isOpened()) {
cerr << "ERROR! Unable to open camera\n";
return -1;
}
// 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 -1;
}
// 确定格式为8位3通道
bool isColor = (src.type() == CV_8UC3);
//--- INITIALIZE VIDEOWRITER
cv::VideoWriter writer;
// 确认编码
int codec = cv::VideoWriter::fourcc('M', 'J', 'P', 'G'); // select desired codec (must be available at runtime)
// 帧数
double fps = 25.0; // framerate of the created video stream
// 存储的文件名字
string filename = "./live.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 -1;
}
//--- GRAB AND WRITE LOOP
cout << "Writing videofile: " << filename << endl
<< "Press any key to terminate" << endl;
// 死循环,可以替换成while(true)
for (;;)
{
// check if we succeeded
// 读取源
if (!cap.read(src)) {
cerr << "ERROR! blank frame grabbed\n";
break;
}
// encode the frame into the videofile stream
// 将视频流写入
writer.write(src);
// show live and wait for a key with timeout long enough to show images
imshow("Live", src);
if (cv::waitKey(5) >= 0)
break;
}
// the videofile will be closed and released automatically in VideoWriter destructor
return 0;


举报

相关推荐

0 条评论