码迷,mamicode.com
首页 > 其他好文 > 详细

opencv进行视频拍摄

时间:2018-06-01 17:33:25      阅读:163      评论:0      收藏:0      [点我收藏+]

标签:show   alt   gray   als   lease   分享   输出   pre   enc   

opencv进行视频拍摄

主要类:VideoCapture与VideoWriter

代码:

double rate = 30.0;
Size videoSize(1280, 960);
VideoCapture capture(0);                                                                //(1)
capture.set(CAP_PROP_POS_AVI_RATIO, rate);                  //设置帧率 
capture.set(CAP_PROP_FRAME_WIDTH, videoSize.width);         //设置尺寸大小
capture.set(CAP_PROP_FRAME_HEIGHT, videoSize.height);

//VideoWriter writer("out.avi", CV_FOURCC(‘M‘, ‘J‘, ‘P‘, ‘G‘), rate, videoSize, false); //(2)
VideoWriter writer("out.avi", -1 , rate, videoSize, false);                             //(3)

Mat frame;

int frame_num = 0;
while (capture.isOpened() && frame_num <300 )
{
    ++frame_num;
    capture >> frame;

    cv::cvtColor(frame, frame, CV_BGR2GRAY);
    
    writer << frame;   
    cv::imshow("video", frame);

    if (cv::waitKey(1000/rate) > 0)
        break;
}

//关闭视频,手动调用析构函数
capture.release();
writer.release();                                                                       //(4)

注意:

  (1) 该段程序为利用摄像机进行拍摄的代码,如果读取现有视频,则将语句(1)进行修改,将参数0改为路径名,如

VideoCapture capture("Demo.avi");

  (2) 经常有拍摄完视频无法播放的情况,问题主要有以下两种情况:
    a)用语句(2)设置VideoWriter时,第二个参数CV_FOURCC设置的是编码格式,而电脑上可能并没有所选的编码格式,从而引起输出视频无法读取;
    解决方法:将语句(2)改为语句(3),语句(3)会自动弹出如下图所示的对话框,可以在其中选择编码格式(这些是电脑上有的编码格式);
    技术分享图片

    b)缺少语句(4)或者由于某些原因没有执行语句(4),同样会导致输出的视频无法读取;
  (3) 语句(3)中最后一个参数为bool isColor(视频帧图像是否为彩色图像),这个参数要与图像对应,否则可能报错。

opencv进行视频拍摄

标签:show   alt   gray   als   lease   分享   输出   pre   enc   

原文地址:https://www.cnblogs.com/silentteen/p/9122525.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!