专业财税服务推荐

精选优质财税服务,为企业提供专业、可靠的财税解决方案,助力企业健康发展

零报税代理记账
零申报代理记账
报税做账算帐财务报表老会计做账
代理记账
咨询微信:lhy_happyday
工商营业执照年度年报年检公示
全国个体、企业、公司、合作社工商年审年报服务!
个体/10元/次 企业/20元/次
咨询微信:lhy_happyday
财税咨询服务
一对一专业财税咨询,解决企业财税难题,提供定制方案
咨询微信:lhy_happyday
财务分析服务
小规模个体报税0申报税务年报工商年报月报季报报税代理记账
咨询微信:lhy_happyday
立即咨询专业财税顾问
微信号: lhy_happyday
会计从业9年,管理多家个体工商、小规模、一般纳税人等企业的财务、税务等相关工作!。
扫码或搜索添加微信,备注"财税咨询"获取专属优惠
知方号 知方号

Qt 学习笔记 opencv imread中文路径

解决Qt中使用Opencv的cv::imread无法读取中文路径问题

在项目过程中使用opencv时遇到了cv::imread无法读取中文路径的问题。首先思路是先用QIamge对图片进行读取,然后将QImage转换成cv::Mat。

void TemplateImageManager::setTemplateImage(const QString &filePath){ //用QImage读取带中文路径图片 QImage img(filePath); //将img转换成需要的类型 img = img.convertToFormat(QImage::Format_RGB888); //调用QImage2cvMat进行转换,得到cv::mat this->templateImage = QImage2cvMat(img).clone();}

QImage2cvMat是将不同格式的QImage转换cv::Mat中对应的格式

cv::Mat TemplateImageManager::QImage2cvMat(QImage image){ cv::Mat mat; switch(image.format()) { case QImage::Format_ARGB32: case QImage::Format_RGB32: case QImage::Format_ARGB32_Premultiplied: mat = cv::Mat(image.height(), image.width(), CV_8UC4, (void*)image.constBits(), image.bytesPerLine()); break; case QImage::Format_RGB888: mat = cv::Mat(image.height(), image.width(), CV_8UC3, (void*)image.constBits(), image.bytesPerLine()); cv::cvtColor(mat, mat, cv::COLOR_BGR2RGB); break; case QImage::Format_Indexed8: mat = cv::Mat(image.height(), image.width(), CV_8UC1, (void*)image.constBits(), image.bytesPerLine()); break; } return mat;}

到这里问题就解决了。给大家分享一个我的一点点收获,也是我想记录的东西。 这两个函数中,QImage img 是一个局部变量,而我们用它进行图片读取的时候,图片的数据是由QImage进行管理的,而我们QImage2cvMat中用的是 (void*)image.constBits(),转换出来的mat其实指向的是img的内存,然后我之前用的是 this->templateImage = QImage2cvMat(img) ,这里也是mat之间的浅拷贝,我的this->templateImage指向的是mat的内存地址,也就相当于指向的img的内存。所以由于img是一个局部变量,执行完这个函数之后,QImage便会将内存清空,而此时this->templateImage使用就会出错了,所以后面就采用了this->templateImage = QImage2cvMat(img).clone()来进行深度拷贝,这时候就是直接复制了一份img的内存数据啦,后面就能进行正常访问了。

如果有哪里说的不对的地方,欢迎大家指正。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至lizi9903@foxmail.com举报,一经查实,本站将立刻删除。