Mac下用Xcode编译OpenCV时avi文件总会出问题,主要还是视频编码方式的原因,在此我来总结一下这两个函数在Mac下的具体使用方法:
1、cvCreateFileCapture
使用格式:
char name[]="/Users/sean/Documents/untitled folder/2.avi";
CvCapture* capture = cvCreateFileCapture(name);
文件路径必须填写完整,Xcode不用考虑转义字符,能成功读写出来。
常见问题:avi文件打不开
解决办法:用视频转码工具转换成mac能识别的码字,工具连接(链接: http://pan.baidu.com/s/1XZtSU 密码: ny43)
使用方法:下载“soccer.avi”、“ha-virtualdub.zip”解压,并打开“VirtualDub.exe”。
(1)File--->open video file--->打开“soccer.avi”;
(2)Video--->Compression--->选择“Microsoft Video 1”--->OK;
(3) File--->save as AVI,接下来保存好的就是解码过的视频啦,OpenCV能直接打开。
2、cvCreateVideoWriter
使用格式:
CvVideoWriter* write = cvCreateVideoWriter
(
"/Users/sean/Documents/untitled folder/3.avi",
CV_FOURCC('r', 'p', 'z', 'a'),
fps,
size
);
同样路径需要完整。
常见问题:cvWriteFrame写出的文件大小只有414kb
解决办法:这个是由于write在创建的时候参数fourCC的使用不当造成的,此处必须使用mac支持的编码方式才行,在此我来给出mac可用的编码:
大部分都能用,毕竟现在QuickTime都到V.10了。
使用方法:
CvVideoWriter* write = cvCreateVideoWriter
(
"/Users/sean/Documents/untitled folder/3.avi",
CV_FOURCC('r', 'p', 'z', 'a'),
fps,
size
);
CvVideoWriter* re_write = cvCreateVideoWriter
(
"/Users/sean/Documents/untitled folder/re3.avi",
CV_FOURCC('j', 'p', 'e', 'g'),
fps,
size
);
只需改变CV_FOURCC后面的参数即可。
补充说明:
有人说安装Xvid解码器就能用了,不过个人尝试后发现xcode对这个解码器貌似不感冒,我来贴出官方链接(http://www.xvidmovies.com/codec/)毕竟这个code已经13年没更新过了,可以下载下来看
还有人问网上下载的 “ .sit ” 文件我打不开,正如我所说,这个文件是2003年最后一次更新的,所以它是个相当老的一种压缩方式,需要下载专门的解压软件来解压
不想下软件的可以去我的百度云连接里下载.zip文件,我已经解压好了。Xvid这个方法应该只对win奏效,mac添加的第三方编码方式好像都不能在编写OpenCV的时候使用,也有可能是我在Xcode工程选项中没有配置好吧,若有人成功希望在评论中告诉我,我会继续完善OpenCV在Mac中各项功能的使用。