【已解决】cv2.imread读取中文名称图片报错或者无法保存中文名图片:使用cv2.imdecode与cv2.imencode解决

简介: 【已解决】cv2.imread读取中文名称图片报错或者无法保存中文名图片:使用cv2.imdecode与cv2.imencode解决


问题描述

1.使用opencv中的cv2.imread读取中文名称图片报错:

[ WARN:0@0.028] global loadsave.cpp:248 cv::findDecoder imread_(‘邓紫棋.jpg’): can’t open/read file: check file path/integrity

Traceback (most recent call last):

File “D:\MyTest\TestFiles\test1.py”, line 6, in

cv2.imshow(‘test’,img)

cv2.error: OpenCV(4.9.0) D:\a\opencv-python\opencv-python\opencv\modules\highgui\src\window.cpp:971: error: (-215:Assertion failed) size.width>0 && size.height>0 in function ‘cv::imshow’

运行代码如下:

# coding:utf-8
import cv2
img = cv2.imread('邓紫棋.jpg')
cv2.imshow('test',img)
cv2.waitKey(0)

2.使用opencv中的cv2.imwrite无法保存中文名称图片

cv2.imwrite('邓紫棋2.jpg',img) # 运行后,没有显示保存文件,也没有报错

运行代码后,没有保存图片文件,也没有报错。

解决办法:使用cv2.imdecode与cv2.imencode

读取中文名图片:cv2.imdecode

使用cv2.imdecode进行图片读取,代码如下:

# coding:utf-8
import cv2
import numpy as np
# img = cv2.imread('邓紫棋.jpg')
img = cv2.imdecode(np.fromfile('邓紫棋.jpg', dtype=np.uint8), cv2.IMREAD_COLOR)
cv2.imshow('test',img)
cv2.waitKey(0)

运行后可以正常显示:

保存中文名图片:cv2.imencode

# coding:utf-8
import cv2
import numpy as np
# img = cv2.imread('邓紫棋.jpg')
img = cv2.imdecode(np.fromfile('邓紫棋.jpg', dtype=np.uint8), cv2.IMREAD_COLOR)
cv2.imencode('.jpg',img)[1].tofile('邓紫棋2.jpg')

其中:'.jpg’表示把当前图片img按照jpg格式编码。

运行后可以正常保存。

相关文章
|
计算机视觉 Python
OpenCV中拆分通道、合并通道、alpha通道的讲解及实战演示(附python源码 超详细)
OpenCV中拆分通道、合并通道、alpha通道的讲解及实战演示(附python源码 超详细)
1479 0
|
计算机视觉
Opencv错误笔记(一):通过cv2保存图片采用中文命名出现乱码
在使用OpenCV的cv2模块保存带有中文命名的图片时,直接使用cv2.imwrite()会导致乱码问题,可以通过改用cv2.imencode()方法来解决。
1032 0
Opencv错误笔记(一):通过cv2保存图片采用中文命名出现乱码
|
计算机视觉 Windows Python
windows下使用python + opencv读取含有中文路径的图片 和 把图片数据保存到含有中文的路径下
在Windows系统中,直接使用`cv2.imread()`和`cv2.imwrite()`处理含中文路径的图像文件时会遇到问题。读取时会返回空数据,保存时则无法正确保存至目标目录。为解决这些问题,可以使用`cv2.imdecode()`结合`np.fromfile()`来读取图像,并使用`cv2.imencode()`结合`tofile()`方法来保存图像至含中文的路径。这种方法有效避免了路径编码问题,确保图像处理流程顺畅进行。
2293 1
|
网络协议 安全 Python
python中socket客户端关闭连接
【4月更文挑战第7天】本教程介绍了如何在TCP客户端中正确关闭连接。使用`close()`方法可关闭Socket连接并释放资源,示例代码显示了在正常和异常情况下关闭连接的方法。注意异常处理以确保在任何情况下都能关闭连接,并避免并发操作同一Socket,以保证连接的稳定和安全。掌握这些技巧对编写健壮的TCP客户端至关重要。
1518 2
|
11月前
|
机器学习/深度学习 人工智能 算法
Python+YOLO v8 实战:手把手教你打造专属 AI 视觉目标检测模型
本文介绍了如何使用 Python 和 YOLO v8 开发专属的 AI 视觉目标检测模型。首先讲解了 YOLO 的基本概念及其高效精准的特点,接着详细说明了环境搭建步骤,包括安装 Python、PyCharm 和 Ultralytics 库。随后引导读者加载预训练模型进行图片验证,并准备数据集以训练自定义模型。最后,展示了如何验证训练好的模型并提供示例代码。通过本文,你将学会从零开始打造自己的目标检测系统,满足实际场景需求。
11591 1
Python+YOLO v8 实战:手把手教你打造专属 AI 视觉目标检测模型
|
存储 数据采集 机器学习/深度学习
LIDC-IDRI肺结节数据集分割策略
本文介绍了使用LIDC-IDRI开源数据集进行肺癌检测项目的完整流程,包括数据预处理、训练分割模型和分类模型三个主要步骤。首先,下载包含患者DICOM文件的数据集;其次,克隆预处理代码并配置Pylidc库以生成肺部遮罩图像;最后,通过脚本准备数据集并创建元数据文件。文章还提供了相关GitHub资源链接,帮助读者更好地理解和实现项目。
1731 11
LIDC-IDRI肺结节数据集分割策略
|
并行计算 PyTorch Linux
大概率(5重方法)解决RuntimeError: CUDA out of memory. Tried to allocate ... MiB
大概率(5重方法)解决RuntimeError: CUDA out of memory. Tried to allocate ... MiB
12297 0
|
XML 机器学习/深度学习 数据格式
YOLOv8训练自己的数据集+常用传参说明
YOLOv8训练自己的数据集+常用传参说明
25550 3
|
编解码 算法 计算机视觉
YOLOv11改进策略【Head】| 增加针对 大目标 的检测层 (四个检测头)
YOLOv11改进策略【Head】| 增加针对 大目标 的检测层 (四个检测头)
2394 7
|
XML 数据格式 Python
YOLOv5入门实践(3)——手把手教你划分自己的数据集
YOLOv5入门实践(3)——手把手教你划分自己的数据集
5668 0
YOLOv5入门实践(3)——手把手教你划分自己的数据集

热门文章

最新文章

下一篇
开通oss服务