我有一些使用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
取消注释时,该文件为空。
答案 0 :(得分:1)
我试图使用XVID编解码器制作黑白视频并获得空白电影(长度为5kB),直到我使FFMPEG库可用于编程(将它们与程序或PATH编辑目录,Windows操作系统放在一起)。
OpenCV会检查FFMPEG是否存在并在可用时使用它。
除了备注 - 使用第二个Mat作为黑白框架 - 它将节省计算机时间(每个捕获的单个对象导致两次重新分配/重新初始化)
cvtColor(frame, bwframe, CV_BGR2GRAY);