目录

问题描述:imread()函数不能识别Qt的路径命名规则

解决办法

一,先将图片文件读取成比特流,再使用opencv中imdecode()函数将比特流解码成Mat图像

二,先将图片读取成QImage格式,再将QImage格式转换为Mat格式


问题描述:imread()函数不能识别Qt的路径命名规则

我的程序中有这样一段代码:

    QString ctImgPath = "CT.jpg";//图片文件与主函数文件在同一个文件夹Mat ctImg = imread(ctImgPath.toLatin1().data());if(ctImg.empty ()){qDebug("图像为空");}

在debug模式下,使用Qt Creator打开,能正常读取。但是在release模式下,或者直接的debug文件夹中打开exe文件时,图像为空。

原因在于:Qt在编译之后,对图片文件进行了编码,原来的图片文件已经不见了:

资源文件目录​​

编码成了cpp文件:

qrc_res.cpp文件内容:

所以不建议在Qt中使用传统的文件路径来引用文件,在Qt中有两种方式命名路径:

分别是:

:/XXX.jpg

qrc:/XXX.jpg

 问题随之而来:

使用imread()函数并不能识别Qt的路径命名规则

解决办法

一,先将图片文件读取成比特流,再使用opencv中imdecode()函数将比特流解码成Mat图像

    Mat ctImg;QFile file(":/CT.jpg");if(!file.open(QFile::ReadOnly)){qDebug("读取失败");}else{QByteArray ba = file.readAll();ctImg = imdecode(vector<char>(ba.begin(), ba.end()), 1);}if(ctImg.empty ()){qDebug("图像为空");}

二,先将图片读取成QImage格式,再将QImage格式转换为Mat格式

转换方法参考:Qt QImage 与 OpenCV 的 Mat 类型的相互转化(改进),QImage与Mat之间的相互转换

Qt中中opencv使用imread()读取图片失败问题及解决办法相关推荐

  1. OpenCV使用imread读取图片失败解决方案

    使用一下代码读取图像,出现[ WARN:0@1.635] global D:\a\opencv-python\opencv-python\opencv\modules\imgcodecs\src\lo ...

  2. c++imread 函数_OpenCV中C++函数imread读取图片的问题及解决方法

    今天在用OpenCV实验Image Pyramid的时候发现一个奇怪的问题,就是利用C++函数imread读取图片的时候返回的结果总是空,而利用C函数cvLoadImage时却能读取到图像.代码如下: ...

  3. iis6导出Excel报错检索 COM 类工厂中 CLSID 为 {00024500-0000-0000-C000-000000000046} 的组件时失败,8000401a错误解决办法

    1:在服务器上安装office的Excel软件. 2:在"开始"->"运行"中输入dcomcnfg.exe启动"组件服务" 3:依次双 ...

  4. C++ opencv 4.5 imread() 读取图片,显示为空的解决办法

    C++ opencv 4.5 imread() 读取图片,显示为空的解决办法 一.路径问题 先查看下路径问题,如果使用的是相对路径,先查看下当前路径,判断输入的路径是否有错: #include < ...

  5. Python opencv 库cv.imread()读取图片为空None,cv.imshow()报错:error: (-215:Assertion failed) _src.empty() in ..

    报错原因: cv.imread()读取图片为空None,原因很大可能是路径有问题,要么是在路径下找不到图片,要么就是路径中包含有中文(特别要注意是不是路径含有中文):图片读取为空从而导致了在显示图片时 ...

  6. OpenCV imread读取图片,imshow展示图片,出现cv:Exception at memory location异常

    OpenCV imread读取图片,imshow展示图片,出现cv:Exception at memory location异常 参考文章: (1)OpenCV imread读取图片,imshow展示 ...

  7. 关于cv::imread读取图片类型的初探

    关于cv::imread读取图片类型的初探 问题来源 环境 首先生成单通道和三通道的png图片 cv::imread函数及其参数 不同参数读取rgb图像 不同参数读取单通道图片 遇到的一些情况 问题来 ...

  8. 解决java中使用getImage()导入图片失败问题

    解决java中使用getImage()导入图片失败问题 在使用getImage(fileName)方法导入图片时,一直失败.后来加入相对路径解决找不到图片问题. 代码如下 image = Toolki ...

  9. 路径正确imread读取图片却为空

    参考 仅作为个人学习记录使用 平时在使用imread读取图片时,常会遇到报错读取结果为None 排除常见的错误如:路径不对.路径有中文 还有一种错误是:可能图片后缀是jpg.png,实际上他并不是一个 ...

最新文章

  1. 用java实现给图片增加图片水印或者文字水印(也支持视频图像帧添加水印)
  2. MBProgressHUD 使用详解
  3. 北京高性能计算机应用中心,中国气象局高性能计算机系统资源使用报告-北京高性能计算机应用中心.PDF...
  4. java求多项式回归_多项式回归(Polynomial Regression)(附代码)
  5. arduino蓝牙通讯代码_蓝牙4.0模块 无线数据传输模块 无线蓝牙串口 Arduino
  6. 10个 IDEA 插件来解放你的双手
  7. 图解 Redis丨这就是 RDB 快照,能记录实际数据的
  8. docker选择安装路径_Docker安装
  9. netstat查看占用端口
  10. Mac Safari浏览器的阅读列表与iPhone、iPad (iOS)不同步的问题
  11. 百度地图与 select下拉框的双向维护
  12. JSON转换问题最全详解(json转List,json转对象,json转JSONObject)
  13. 光环PMP 串讲冲刺 敏捷
  14. H5页面唤起指定app或跳转到应用市场
  15. CPU天梯图2022
  16. 你的程序要读入一系列正整数数据,输入-1表示输入结束,-1本身不是输入的数据。程序输出读到的数据中的奇数和偶数的个数。
  17. VC运行库安装错误0x80240017解决过程
  18. 先验概率 后验概率 贝叶斯法则 贝叶斯公式
  19. 使用GnuRadio + OpenLTE + SDR 搭建4G LTE 基站(上)
  20. linux 命令总结大全

热门文章

  1. C 源码学习——memcpy函数
  2. 统计分析:聚类分析(详细讲解)
  3. 2023社工准考证什么时候打印 具体时间是几号
  4. 哪些人不能学计算机,哪些人不适合学计算机 原因是什么
  5. ipv6简写还原_IPv6地址表示方法及其简化方法详解
  6. 多线程基础之设计模之Thread-Specific Storage模式
  7. RPC架构组件详解刨析
  8. 计算机软件与程序没有任何关系,该文件没有程序与之关联来执行操作解决方法详解...
  9. Linux 看懂top命令
  10. 在单位中,这五句话千万不能说