【发布时间】:2013-07-10 14:53:02
【问题描述】:
我编写了下面的代码,它试图保存一张图片并数百个,最后使用以下编解码器 MP42(MPEG4-V2) 将它们全部抓取到一个视频中
#include <stdAfx.h>
#include <iostream>
#include <opencv2\opencv.hpp>
using namespace cv;
using namespace std;
int n=0;
char a;
int main(int, char** argv)
{
Mat image= imread("C:\\Users\\Metin\\Desktop\\images.jpg");
Mat newimage;
VideoWriter vide ("Hopdedik.avi",CV_FOURCC('M','P','4','2'),30.0,image.size());
vide.open("Hopdedik.avi",CV_FOURCC('M','P','4','2'),30.0,image.size());
for(int n=0; n<100;n++){
cout<<n<<'\n';
std::string s= to_string(static_cast<long long>(n));
image.copyTo(newimage);
putText(newimage,s,Point(100,40),cv::FONT_HERSHEY_COMPLEX,2,cv::COLORMAP_COOL,2,2,false);
imshow("asd",newimage);
if(!vide.isOpened())cout<<"can not opened";
vide.write(newimage);
waitKey(10);
}
vide.release();
return 0;
}
我开始在 Release 模式下调试并将 .exe 文件复制到 Virtualbox Win7-64 位。在我放入必要的 .dll 文件后,exe 可以工作,但代码无法正确创建视频。
我尝试安装以下两个编解码器: http://www.fourcc.org/downloads/angel-potion-mpeg-4--8/ 和 Indeo,即:http://www.afreecodec.com/codec-by-code/iv45-160.html
但它不起作用。
【问题讨论】:
-
您是否尝试将相同的 opencv_ffmpeg.dll 文件放入文件夹中?
-
不,威廉!不幸的是它没有工作:(
-
那么,你可以实际观看imshow()的过程,程序正常退出但你没有视频文件输出?我会在项目中插入一些 opencv 源代码以进行进一步调试。基本上是包含 VideoWriter.open() 实现的文件。
-
好吧,我在同一目录中有视频输出,但其中没有数据,视频文件的大小为 0 字节。我不明白出了什么问题,我假设编解码器有问题,我可以在我的主机 pc(win7-64 位)上使用数据创建视频输出(清除 win7-64 位系统)你有什么推荐的编解码器吗或者你在这里看到另一个问题?
-
请回答我的第一个问题。让我换个说法:
imshow("asd",newimage);行是否适用于访客 PC 上的所有 100 帧?
标签: c++ opencv windows-7-x64 codec