在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中就可以了,就不在多说了。

相关文章:

  • 2021-12-04
  • 2021-05-22
  • 2022-12-23
  • 2021-11-02
  • 2021-09-04
  • 2021-10-23
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2022-12-23
  • 2022-02-16
  • 2022-12-23
  • 2022-12-23
  • 2021-11-05
  • 2022-02-26
  • 2021-12-15
相关资源
相似解决方案