opencv中文路径问题

目的

在windows系统上,就是直接用QT的utf8编码作为图片路径用在opencv读取或者写入函数,在路径当中含有中文时,会提示编码错误。
就是解决opencv中的中文路径的问题。

情况

代码如下:

#pragma execution_character_set("utf-8")
#include <QApplication>
#include <QDebug>
#include <opencv2/opencv.hpp>
using namespace cv;
int main(int argc, char *argv[])
{QApplication a(argc, argv);//MainWindow w;//w.show();//QString str = QString::fromUtf8("E:\\temp\\lushanjing3.jpg");QString str = QString::fromUtf8("E:\\temp\\图片\\lushanjing2.jpg");qDebug()<<str;Mat img = imread(str.toStdString());//图片路径//处理前imshow("img",img);//显示图片//Mat resimg;//高斯模糊//cv::GaussianBlur(img,resimg,Size(5,5),0);//imshow("resimg",resimg);//显示图片waitKey(2000);//等待按键return a.exec();
}

运行情况:

17:21:01: Starting E:\project2023\example\openCv1\build-openCv1-Desktop_Qt_5_11_3_MSVC2015_64bit-Release\release\openCv1...
"E:\\temp\\图片\\lushanjing2.jpg"
[ WARN:0@0.071] global E:\openSource\opencv4.5\opencv-4.5.5\modules\imgcodecs\src\loadsave.cpp (239) cv::findDecoder imread_('E:\temp\鍥剧墖\lushanjing2.jpg'): can't open/read file: check file path/integrity
1127, FromFilemap
OpenCV: terminate handler is called! The last OpenCV error is:
OpenCV(4.5.5) Error: Assertion failed (!_src.empty()) in cv::cvtColor, file E:\openSource\opencv4.5\opencv-4.5.5\modules\imgproc\src\color.cpp, line 182
17:21:02: 程序异常结束。
17:21:02: The process was ended forcefully.

这个问题就是中文路径的问题。
如何解决呢?
在Qt中使用OpenCV打开含有中文路径的图片时,可能会遇到编码问题。这是因为Qt默认使用的是UTF-8编码,而Windows系统中路径字符串通常使用的是GBK或其他编码。
为了解决这个问题,可以在打开文件前将中文路径转换为OpenCV可以理解的编码格式。
代码更改如下:

//#include "mainwindow.h"
#pragma execution_character_set("utf-8")
#include <QApplication>
#include <QDebug>
#include <opencv2/opencv.hpp>
using namespace cv;
int main(int argc, char *argv[])
{QApplication a(argc, argv);//MainWindow w;//w.show();//QString str = QString::fromUtf8("E:\\temp\\lushanjing3.jpg");QString str = QString::fromUtf8("E:\\temp\\图片\\lushanjing2.jpg");//QString str = QString::fromLocal8Bit("E:\\temp\\图片\\lushanjing2.jpg");qDebug()<<str;Mat img = imread(str.toLocal8Bit().toStdString());//图片路径//处理前imshow("img",img);//显示图片//Mat resimg;//高斯模糊//cv::GaussianBlur(img,resimg,Size(5,5),0);//imshow("resimg",resimg);//显示图片waitKey(2000);//等待按键return a.exec();
}

运行情况如下:
在这里插入图片描述

显然是可以成功运行的。

总结

其关键在于用了toLocal8Bit()的编码转化,这一个函数的解释如下:
以QByteArray形式返回字符串的本地8位表示形式。如果字符串包含本地8位编码不支持的字符,则返回的字节数组是未定义的。
简单来说就是,以转化为以本地编码的字符串,显然适应了当前的要求:
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/29460.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

以CMDB为基础构建DevOps平台体系

在当今数字化转型的浪潮中&#xff0c;企业IT运维模式正从传统的资产管理向现代化的资源管理转变。配置管理数据库&#xff08;CMDB&#xff09;作为IT运维的核心组成部分&#xff0c;其在DevOps平台中的重要性愈加凸显。通过国信证券和招商银行的实际案例&#xff0c;我们将详…

css 文字下划线 text-decoration

背景&#xff1a; 在某些时候需要给文字添加特殊样式。使用 text-decoration: underline; 来为段落文字添加下划线。也有其它文本装饰样式&#xff0c;例如&#xff1a; none&#xff1a;无装饰&#xff08;去掉装饰&#xff09;overline&#xff1a;上划线line-through&…

《珊瑚岛》是一款什么类型的游戏 苹果电脑如何玩到《珊瑚岛》

在众多电子游戏中&#xff0c;有些游戏因其独特的游戏体验和丰富的内容而脱颖而出&#xff0c;《珊瑚岛》便是其中之一。在游戏中你将离开宝京前往珊瑚岛&#xff0c;种植农作物、饲养动物、和岛民成为朋友。您不仅可以振兴该岛小镇&#xff0c;还可以保护和修复周围的珊瑚礁。…

C# OpenCV 部署RecRecNet广角图像畸变矫正

C# OpenCV 部署RecRecNet广角图像畸变矫正 目录 说明 效果 模型信息 项目 代码 下载 说明 ICCV2023 - RecRecNet: Rectangling Rectified Wide-Angle Images by Thin-Plate Spline Model and DoF-based Curriculum Learning 参考&#xff1a; https://github.com/Kang…

CleanMyMac中文版2024破解完美版本下载链接

CleanMyMac中文版&#xff0c;是一款功能强大的系统优化软件。它能够帮助你清理垃圾文件、卸载无用应用、优化内存使用等&#xff0c;让你的电脑运行更加流畅稳定。 CleanMyMac中文版具有智能扫描功能&#xff0c;能够自动识别电脑上的垃圾文件和冗余数据。它能够快速扫描整个…

【MongoDB 新搭档 Kafka】

对于做过数据处理&#xff0c;使用过消息队列的小伙伴 &#xff0c;Kafka可以算是老朋友了&#xff0c;但是最近一个场景下&#xff0c;新的用法&#xff0c;让其变为了MongoDB的新搭档。 开始 从一个问题开始&#xff0c;熟悉MongoDB的小伙伴&#xff0c;可能使用过changeSt…

Java的三个接口Comparable,Comparator,Cloneable(浅拷贝与深拷贝)

Comparable 当我们要进行对象的比较的时候&#xff0c;我们是不能直接用>、< 这些符号直接进行比较的。 由于这是引用类型变量也是自定义类型变量&#xff0c;直接进行比较的时候&#xff0c;我们是通过对象的地址进行比较的&#xff0c;我们可以使用、! 进行两个对象的…

Spring Cloud 专题-前言篇(1)

引言 随着微服务架构的兴起&#xff0c;Spring Cloud 作为一套基于 Spring Boot 实现的云应用开发工具集&#xff0c;为开发者提供了在分布式系统&#xff08;如配置管理、服务发现、断路器、智能路由、微代理、控制总线等&#xff09;中快速构建一些常见模式的能力。本篇文档…

2024年大韩民国最佳品牌大赏 彭雨凡荣获“海外邀请特别奖”

14日&#xff0c;“2024年大韩民国最佳品牌大赏-韩流演艺大赏”颁奖典礼在韩国首尔永登浦区汝矣岛洞国会议员会馆第2会议室举办。 演员彭雨凡荣获“海外邀请特别奖”。 据悉&#xff0c;由大韩民国最佳品牌协会和世宗大王国民委员会&#xff08;理事长 LEE YUNTAE&#xff09…

关于IOMMU问题的扩展

关联CSDN&#xff1a; Steam Deck OLED WLAN下载速率过低问题的排查和解决-CSDN博客 前言 如前所述&#xff0c;Steam Deck OLED WLAN速率低问题和IOMMU有一定的关系&#xff0c;这里我们对IOMMU为什么会对速率有影响进行一个较深入的理解。 对于IOMMU我相信大家通过网上的…

Android中的Audio系统框架分析(一)

概述 Audio系统是Android 平台重要的组成部分&#xff0c;我们将从以下几个方面来讲解&#xff1a; 一Audio基础知识讲解 二、Android系统中Audio框架 Audio基础知识讲解 我们大家知道声音是由物体振动产生的声波。是通过介质&#xff08;空气或固体、液体&#xff09;传播并…

CrossOver Games For Mac官方下载_2024电脑最新版软件安装包下载

CrossOver Pro For Mac是由codewaver公司开发的类虚拟机软件&#xff0c;目的是使linux和Mac OS X操作系统和window系统兼容。CrossOver Pro For Mac能够直接在Mac上运行Windows软件与游戏&#xff0c;而不需虚拟机&#xff0c;功能是非常强大的&#xff0c;值得大家下载使用。…

在Spring Boot中使用Sa-Token实现路径拦截和特定接口放行

在Spring Boot中使用Sa-Token实现路径拦截和特定接口放行 很喜欢的一段话&#xff1a;别想太多&#xff0c;好好生活&#xff0c;也许日子过着过着就会有答案&#xff0c;努力走着走着就会有温柔的着落。 春在路上&#xff0c;花在枝上&#xff0c;所有的美好都在路上&#xff…

【测试专题】系统测试报告(原件Word)

软件测试报告在软件开发过程中起着至关重要的作用&#xff0c;主要有以下几个主要原因&#xff1a; 1、确保软件质量 2、提供决策支持 3、记录测试过程和结果 4、促进沟通和协作 5、符合标准和法规要求 6、改进测试流程和策略 7、降低风险 软件开发全套资料获取进主页或者本文末…

IO流(二)

IO流&#xff08;二&#xff09; 目录 IO流 —— 字符流IO流 —— 缓冲流IO流 —— 转换流IO流 —— 打印流IO流 —— 数据流IO流 —— 序列化流 1.IO流 —— 字符流 文件字符输入流 —— 读字符数据进来 字节流&#xff1a;适合复制文件等&#xff0c;不适合读写文本文件字…

nginx rewrite地址重写

目录 常用的nginx正则表达式 location和rewrite的区别 一、location 1.location常用匹配类型 2.location匹配机制 3.实际工作中三大匹配规则 1.网站首页匹配 2.网站静态页面&#xff0c;通过前缀匹配或通用匹配在nginx服务器本地处理 3.网站动态页面&#xff0c;通过匹…

PostgreSQL源码分析——initdb

数据库初始化 在安装完数据库后&#xff0c;需要进行初始化数据库操作&#xff0c;对应PostgreSQL数据库中就是需要进行initdb后&#xff0c;才能对数据库进行启动。initdb的过程&#xff0c;其实就是创建数据库实例的过程&#xff0c;生成模板数据库和相应的目录、文件信息&a…

uniapp小程序限制微信群访问(图文教程)

我有一个微信小程序 “程序员实用资源” 我现在只想让我的微信群可以访问这个小程序的所有功能 所以我必须对我小程序的来源进行限制&#xff0c;让部分功能在正常访问的时候提示没有加群&#xff0c;不可访问&#xff0c;只有从群内点击进入小程序的时候才可以访问这部分功能…

目标检测顶会新成果!20个突破性方法,更高性能,更强理解与分析能力!

【目标检测】在近年来的深度学习领域中备受关注&#xff0c;它通过识别和定位图像中的目标对象&#xff0c;提升了模型在图像理解和分析方面的能力。目标检测技术在自动驾驶、安防监控和医疗影像分析等任务中取得了显著成果。其独特的方法和卓越的表现使其成为研究热点之一。 为…

ESP32蓝牙串口通讯

文章目录 一、前言二、代码三、运行 一、前言 ESP32支持经典蓝牙和低功耗蓝牙&#xff08;BLE&#xff09;,经典蓝牙可在计算机上模拟出一个串口&#xff0c;使得ESP32可以以串口的方式和计算机通信。 二、代码 #include "BluetoothSerial.h"String device_name …