OpenCV读取并保存中文路径图片指南

OpenCV读取并保存中文路径图片指南

一、需求分析

在Python中使用OpenCV处理图片时,涉及读取和保存图片的操作,可能会遇到中文路径的兼容性问题。该指南的目的是展示如何正确处理带有中文路径的图片,并使用OpenCV将图片保存到指定的中文路径下。

二、工具链(各种对象或函数)

2.1 cv2.imencode

语法:

python 复制代码
cv2.imencode(ext, img[, params])

参数解析:

  • ext:指定保存文件的格式,例如.jpg.png
  • img:待保存的图片数据(numpy数组)。
  • params:可选参数,用于设置图片的保存质量等属性。
  • 返回值:一个包含编码后的图片字节数据的元组(返回值为成功与否的布尔值和字节数据)。
2.2 numpy.tofile

语法:

python 复制代码
numpy.ndarray.tofile(fid, sep="", format="%s")

参数解析:

  • fid:保存的目标文件路径,可以是中文路径。
  • sep:分隔符。默认值为空,表示不使用分隔符。
  • format:保存数据的格式。
  • 返回值:无。直接将数组内容保存到指定路径。

三、实例

3.1 读取和保存带中文路径的图片
  • 代码:
python 复制代码
import cv2
import numpy as np

# 读取中文路径图片
img_path = r'中文路径/图片.jpg'
img = cv2.imdecode(np.fromfile(img_path, dtype=np.uint8), cv2.IMREAD_COLOR)

# 检查图片是否读取成功
if img is None:
    raise ValueError(f"无法读取图片:{img_path}")

# 保存图片到新的中文路径
save_path = r'中文路径/保存的图片.jpg'
cv2.imencode('.jpg', img)[1].tofile(save_path)
print(f"图片已保存至:{save_path}")
  • 代码解释:
    1. 使用np.fromfile来读取含中文路径的图片文件,并将其转化为字节数据,避免因路径编码问题导致的cv2.imread失败。
    2. 利用cv2.imdecode将读取的字节数据解码为OpenCV可处理的图像数据。
    3. 将读取的图片数据通过cv2.imencode编码后,利用tofile保存至中文路径,确保路径兼容性。
    4. cv2.imencode('.jpg', img)返回的是一个包含两个元素的元组,第一个元素是编码是否成功的布尔值,第二个元素是编码后的图像字节数据。

四、注意事项

  1. Python的cv2.imread可能无法直接处理中文路径,建议使用np.fromfile读取图片并通过cv2.imdecode解码。
  2. 保存图片时,直接使用cv2.imwrite也会遇到中文路径问题,使用cv2.imencode结合numpy.tofile来保存图片文件。
  3. 确保路径中的中文字符以r''的原始字符串格式传递,避免转义字符导致的路径错误。
相关推荐
jndingxin21 小时前
OpenCV 图形API(11)对图像进行掩码操作的函数mask()
人工智能·opencv·计算机视觉
阳光_你好1 天前
请详细说明opencv/c++对图片缩放
c++·opencv·计算机视觉
契合qht53_shine1 天前
OpenCV 从入门到精通(day_05)
人工智能·opencv·计算机视觉
xcLeigh1 天前
OpenCV从零开始:30天掌握图像处理基础
图像处理·人工智能·python·opencv
新知图书1 天前
OpenCV单窗口显示多图片
人工智能·opencv·计算机视觉
荷包蛋蛋怪1 天前
【北京化工大学】 神经网络与深度学习 实验6 MATAR图像分类
人工智能·深度学习·神经网络·opencv·机器学习·计算机视觉·分类
QQ_7781329741 天前
OpenCV引擎:驱动实时应用开发的科技狂飙
opencv·计算机视觉
羑悻的小杀马特1 天前
OpenCV 引擎:驱动实时应用开发的科技狂飙
人工智能·科技·opencv·计算机视觉
蹦蹦跳跳真可爱5891 天前
Python----计算机视觉处理(Opencv:道路检测之提取车道线)
python·opencv·计算机视觉
qp1 天前
21.OpenCV获取图像轮廓信息
javascript·opencv·webpack