《Qt5+解决OpenCV中imread()函数和imwrite()函数路径不能包含中文问题》

版权声明:本文为博主原创文章,未经博主允许不得转载,博客地址:http://blog.csdn.net/mars_xiaolei。 https://blog.csdn.net/mars_xiaolei/article/details/88416420

问题 


Qt号称可以翻译国际语言,貌似对中文并不友好,只要路径包含中文,由于编码格式不一样,就可能会成为乱码,导致程序找不到路径。拿Qt新建项目来说,它的项目名称就不支持中文,这个问题一直没有被解决,可能是Qt的开发人员太懒了,懒得改,然后一遇到中文路径,就得去转一次码,有些转码函数还不好用,难受啊!由于我把编码格式改为了UTF-8,所以很长时间都没有遇到中文问题,最近发现了OpenCV中imread()函数和imwrite()函数路径也不能包含中文,一直觉得不太可能是中文问题,但还是发生了。

 

解决方法


1、添加头文件(转码)

#include <QTextCodec>//转码

2、关键代码

string strPath="";
strPath=saveImagePath.toLocal8Bit().toStdString();//QString转Local8Bit再转String

解析:用Qt获取到的是QString类型的字符串,需要先使用toLocal8Bit()函数转换成Local8Bit,也就是本地8位,由于OpenCV中imread()函数和imwrite()函数中使用的是string类型的字符串,因此还要继续使用toStdString()函数转换成C++中的string类型字符串。

 

猜你喜欢

转载自blog.csdn.net/mars_xiaolei/article/details/88416420
今日推荐