我正在编写一个应用程序,用于从iPhone上的一堆图像创建电影文件。我正在使用OpenCv。我下载了ARM的OpenCv静态库(iPhone的本机指令架构),并且生成的库很好。链接到它们库没有问题。
作为第一步,我尝试使用一个图像创建一个.avi文件,看它是否有效。但是cvCreateVideoWriter
总是返回一个NULL值。我做了一些搜索,我相信它是由于编解码器不存在。我在iPhone模拟器上尝试这个。这就是我的所作所为:
- (void)viewDidLoad {
[super viewDidLoad];
UIImage *anImage = [UIImage imageNamed:@"1.jpg"];
IplImage *img_color = [self CreateIplImageFromUIImage:anImage];
//The image gets created just fine
CvVideoWriter *writer =
cvCreateVideoWriter("out.avi",CV_FOURCC('P','I','M','1'),
25,cvSize(320,480),1);
//writer is always null
int result = cvWriteFrame(writer, img_color);
NSLog(@"\n%d",result);
//hence this is also 0 all the time
cvReleaseVideoWriter(&writer);
}
我不确定第二个参数。什么样的编解码器或它究竟做了什么...... 我是一个n00B。有什么建议吗?
答案 0 :(得分:0)
在* nix版本中,OpenCV使用ffmpeg来编码视频文件,因此您需要确保使用ffmpeg支持构建静态库。第二个参数CV_FOURCC('P','I','M','1')
是描述您请求的视频格式/编解码器的FOURCC代码,在本例中是MPEG1编解码器。查看fourcc.org以获取完整列表(并非所有列表都在ffmpeg中工作)。