我是新手。我正在开发OpenCV。我正在尝试使用OpenCV读取和写入视频文件。我的代码是:
VideoCapture inputVideo("input.avi");
if (!inputVideo.isOpened())
{
std::cout << "!!! Input video could not be opened" << std::endl;
return -1;
}
// Setup output video
VideoWriter output_cap("output.avi",
inputVideo.get(CV_CAP_PROP_FOURCC),
inputVideo.get(CV_CAP_PROP_FPS),
cv::Size(inputVideo.get(CV_CAP_PROP_FRAME_WIDTH), inputVideo.get(CV_CAP_PROP_FRAME_HEIGHT)),1);
Mat frame;
output_cap.open("/private/var/root/Desktop/output.avi",
inputVideo.get(CV_CAP_PROP_FOURCC),
inputVideo.get(CV_CAP_PROP_FPS),
cv::Size(inputVideo.get(CV_CAP_PROP_FRAME_WIDTH), inputVideo.get(CV_CAP_PROP_FRAME_HEIGHT)),1);
while (true)
{
if (!inputVideo.read(frame))
break;
imshow("title",frame);
waitKey(100);
output_cap.write(frame);
}
现在我的问题是:当我尝试使用 output_cap.write(frame)编写帧时,我只获得8kb文件作为输出视频文件。但用于查看框架的 imshow(&#34;标题&#34;,框架)功能可正常工作并按顺序查看所有框架。你能告诉我我做错了吗?
答案 0 :(得分:4)
我使用其他四位代码解决了它:8BPS和SVQ3。
我有类似的问题。当我尝试使用mac的网络摄像头录制视频时
imshow(&#34;标题&#34;,帧)
查看框架的功能很好。但是当我尝试使用
编写帧时output_cap.write(帧)
我的输出视频文件只有8kb(正好是414Bytes)。
我尝试了很多方法,但没有工作。最后安装ffmpeg,但仍然无法正常工作。
但我看到&#34; QuickTime视频&#34;当我在终端输入ffmpeg -codecs时。然后我去fourcc.org并查找&#34; Quicktime&#34;。我得到了:8BPS,AVRN,RPZA,SV10,SVQ3和ZYGO。
我尝试了所有这些,只有两个作品:8BPS和SVQ3。
我的代码是:
var upperBound = 14;
for(var i=0;i<upperBound;i++){
console.log("*".repeat(i));
}
答案 1 :(得分:1)
mac os x没有videoWriter。您可以将它们保存为jpeg,然后使用ffmpeg将它们拼接起来。
答案 2 :(得分:0)
如果您使用brew安装了OpenCV,请尝试使用brew install opencv --with-ffpmeg
重新安装。