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''的原始字符串格式传递,避免转义字符导致的路径错误。
相关推荐
hhzz1 天前
OpenCV 入门到精通 09】特征检测与匹配:从 Harris 到 ORB 图像配准
人工智能·opencv·计算机视觉·开源·交互
Tp_jh2 天前
AMD 395本地部署Qwen3.8-Flash-Next实测,端侧AGI时代也要来了
图像处理·人工智能·opencv·语言模型·自然语言处理·千问
yyk333243 天前
计算机视觉OpenCV中的FisherFace人脸识别
人工智能·opencv·计算机视觉
棣廷3 天前
初识OpenCV——Dlib人脸检测、关键点定位与表情识别
opencv·目标检测·机器学习
hhzz3 天前
【OpenCV 入门到精通 07】滤波、阈值与形态学:图像去噪与形状处理
人工智能·python·opencv·计算机视觉
华清远见成都中心3 天前
OpenCV中颜色空间有哪些区别
人工智能·opencv
词却4 天前
OpenCV学习:dlib 人脸检测
人工智能·opencv·学习
matlab代码4 天前
基于matlab阈值分割的车牌识别系统【源码75期】
图像处理·opencv·计算机视觉
leoZ2315 天前
2026-09-10-静态扫描连错三次-用运行环境当裁判
前端·javascript·vue.js·人工智能·opencv·机器学习·数据挖掘
hhzz5 天前
【OpenCV 入门到精通 05】核心操作与像素处理:ROI、运算与性能优化
人工智能·python·opencv·性能优化