OpenCV的cvCaptureFromFile不能用了,不能读取视频文件的处理方法

在VC6.0中,用CFileDialog得到的文件路径是CString类型的,如果用它来打开图片,即用cvLoadImage的话,CString类型是不用转化的,是可以直接用的。

可是,如果你用CFileDialog得到的文件路径直接去打开视频文件的时候就会出现问题,比如用cvCaptureFromFile等读入视频文件就会出现返回的CvCapture类型总是为0的情况。而且,后面在用cvGetCaptureProperty的时候,得到的所有的CvCapture的属性都是为0的。

如何解决呢?就是将CString类型转化为char*类型就好多了。而且char*类型的当然也可以用在cvLoadImage里面了。

转换方法如下:

CString到char*:

filename.Replace(_T("http://www.cnblogs.com/carekee/admin/file://%22),_t(%22"));
char* fileName=(char*)filename.GetBuffer(filename.GetLength());
filename.ReleaseBuffer();

上面的filename=dlg.GetPathname()。转化之后的fileName就为char*类型的数据。在这,如果转化之后用cvCaptureFromFile打开视频文件的时候,返回的CvCapture仍然为0的话,请尝试安装视频解码器。建议安装K-Lite Mega Codec Pack,可以去迅雷去搜索k-lite。

char*到CString的转化方法就容易多了,只要用CString的Format方法格式化到CString中就可以了,就不在多说了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值