本质原因并非网上某些地方说的是中文编码UNICODE、UTF-8之类的问题,其实是python版opencv不接受NON-ASCII的中文路径,为了使用中文路径,可以借助一些其他的库。本文首先介绍一种通过numpy库(毕竟这个是python中几乎最常用库之一了)的方法。
借助Numpy库
读取图像时,借助numpy库的fromfile函数先把图像文件以数据的方式读入内存,然后在内存缓冲区内用opencv提供的imdecode函数将该数据解码成图像数据,核心代码如下:
path = r"D:\Learn4Python\中文路径\中文文件名.jpg"
dat = np.fromfile(path,dtype=np.uint8)
img = cv2.imdecode(dat,cv2.IMREAD_UNCHANGED)
写入(保存)图像时,用opencv提供的imencode函数将图像数据编码成numpy的数据,然后借助numpy的tofile函数把数据写入到路径文件,核心代码如下:
path_zh_write = r"D:\Learn4Python\中文路径\中文文件名写入图像.jpg"
out = cv2.imencode(".jpg",img)
out[1].tofile(path_zh_write)
为了方便学习和完整理解,写了一段实验代码供大家参考,完整代码如下:
import cv2
import numpy as np
#试验四种情况:路径无中文、仅文件名中文、目录和文件名均有中文、仅目录有中文
path1 = r"D:\Learn4Python\EnglishFileName.jpg"
path2 = r"D:\Learn4Python\中文文件名.jpg"
path3 = r"D:\Learn4Python\中文路径\中文文件名.jpg"
path4

&spm=1001.2101.3001.5002&articleId=129756022&d=1&t=3&u=5f42ece06b094f8b954e177acb92ee81)
3735

被折叠的 条评论
为什么被折叠?



