OpenCV黑白视频为空

时间:2016-04-19 14:54:11

标签: c++ opencv video

我有一些使用openCV录制视频的代码。它适用于录制彩色视频,但我想录制黑白。

当我将cvtColor称为黑白时,我会看到一个空视频。我真的很想知道我做错了什么。


    VideoCapture cap(1); // open the default camera
    cap.set(CV_CAP_PROP_FPS, fps);
    cap.set(CV_CAP_PROP_FRAME_WIDTH, 1280);
    cap.set(CV_CAP_PROP_FRAME_HEIGHT, 720);
    if(!cap.isOpened())  // check if we succeeded
        return -1;


    VideoWriter writer(filename, CV_FOURCC('M','P','4','2'), fps, Size(1280, 720), true);

    int count = 0; 
    for(;;)
    {
        count++;
        Mat frame;
        cap >> frame;
        //cvtColor(frame, frame, CV_BGR2GRAY);

        writer.write(frame);
    }


上面的代码生成了一个完美的视频,但是当cvtColor取消注释时,该文件为空。

1 个答案:

答案 0 :(得分:1)

我试图使用XVID编解码器制作黑白视频并获得空白电影(长度为5kB),直到我使FFMPEG库可用于编程(将它们与程序或PATH编辑目录,Windows操作系统放在一起)。

OpenCV会检查FFMPEG是否存在并在可用时使用它。

除了备注 - 使用第二个Mat作为黑白框架 - 它将节省计算机时间(每个捕获的单个对象导致两次重新分配/重新初始化)

 cvtColor(frame, bwframe, CV_BGR2GRAY);