【已解决】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格式编码。

运行后可以正常保存。

相关文章
|
计算机视觉
Opencv错误笔记(一):通过cv2保存图片采用中文命名出现乱码
在使用OpenCV的cv2模块保存带有中文命名的图片时,直接使用cv2.imwrite()会导致乱码问题,可以通过改用cv2.imencode()方法来解决。
1159 0
Opencv错误笔记(一):通过cv2保存图片采用中文命名出现乱码
|
网络协议 安全 Python
python中socket客户端关闭连接
【4月更文挑战第7天】本教程介绍了如何在TCP客户端中正确关闭连接。使用`close()`方法可关闭Socket连接并释放资源,示例代码显示了在正常和异常情况下关闭连接的方法。注意异常处理以确保在任何情况下都能关闭连接,并避免并发操作同一Socket,以保证连接的稳定和安全。掌握这些技巧对编写健壮的TCP客户端至关重要。
1565 2
|
计算机视觉 Windows Python
windows下使用python + opencv读取含有中文路径的图片 和 把图片数据保存到含有中文的路径下
在Windows系统中,直接使用`cv2.imread()`和`cv2.imwrite()`处理含中文路径的图像文件时会遇到问题。读取时会返回空数据,保存时则无法正确保存至目标目录。为解决这些问题,可以使用`cv2.imdecode()`结合`np.fromfile()`来读取图像,并使用`cv2.imencode()`结合`tofile()`方法来保存图像至含中文的路径。这种方法有效避免了路径编码问题,确保图像处理流程顺畅进行。
2519 1
|
算法 计算机视觉
Opencv学习笔记(六):cv2.resize函数的介绍
这篇文章介绍了OpenCV库中cv2.resize函数的使用方法,包括其参数、插值方式选择以及实际代码示例。
3716 1
Opencv学习笔记(六):cv2.resize函数的介绍
|
机器学习/深度学习 人工智能 算法
Python+YOLO v8 实战:手把手教你打造专属 AI 视觉目标检测模型
本文介绍了如何使用 Python 和 YOLO v8 开发专属的 AI 视觉目标检测模型。首先讲解了 YOLO 的基本概念及其高效精准的特点,接着详细说明了环境搭建步骤,包括安装 Python、PyCharm 和 Ultralytics 库。随后引导读者加载预训练模型进行图片验证,并准备数据集以训练自定义模型。最后,展示了如何验证训练好的模型并提供示例代码。通过本文,你将学会从零开始打造自己的目标检测系统,满足实际场景需求。
14175 1
Python+YOLO v8 实战:手把手教你打造专属 AI 视觉目标检测模型
|
JSON 人工智能 数据格式
AI计算机视觉笔记二十六:YOLOV8自训练关键点检测
本文档详细记录了使用YOLOv8训练关键点检测模型的过程。首先通过清华源安装YOLOv8,并验证安装。接着通过示例权重文件与测试图片`bus.jpg`演示预测流程。为准备训练数据,文档介绍了如何使用`labelme`标注工具进行关键点标注,并提供了一个Python脚本`labelme2yolo.py`将标注结果从JSON格式转换为YOLO所需的TXT格式。随后,通过Jupyter Notebook可视化标注结果确保准确性。最后,文档展示了如何组织数据集目录结构,并提供了训练与测试代码示例,包括配置文件`smoke.yaml`及训练脚本`train.py`,帮助读者完成自定义模型的训练与评估。
6513 2
|
并行计算 PyTorch Linux
大概率(5重方法)解决RuntimeError: CUDA out of memory. Tried to allocate ... MiB
大概率(5重方法)解决RuntimeError: CUDA out of memory. Tried to allocate ... MiB
13439 0
|
XML 机器学习/深度学习 数据格式
YOLOv8训练自己的数据集+常用传参说明
YOLOv8训练自己的数据集+常用传参说明
26988 3
|
编解码 算法 计算机视觉
YOLOv11改进策略【Head】| 增加针对 大目标 的检测层 (四个检测头)
YOLOv11改进策略【Head】| 增加针对 大目标 的检测层 (四个检测头)
2615 7
|
机器学习/深度学习 JSON 算法
实例分割笔记(一): 使用YOLOv5-Seg对图像进行分割检测完整版(从自定义数据集到测试验证的完整流程)
本文详细介绍了使用YOLOv5-Seg模型进行图像分割的完整流程,包括图像分割的基础知识、YOLOv5-Seg模型的特点、环境搭建、数据集准备、模型训练、验证、测试以及评价指标。通过实例代码,指导读者从自定义数据集开始,直至模型的测试验证,适合深度学习领域的研究者和开发者参考。
7183 3
实例分割笔记(一): 使用YOLOv5-Seg对图像进行分割检测完整版(从自定义数据集到测试验证的完整流程)