方案一
解决办法,定义如下函数:
def cv_imread(fild_path):
cv_img = cv2.imdecode(np.fromfile(file_path,dtype=np.uint8),-1)
return cv_img
程序开始处添加:
# -*- coding: utf-8 -*-
中文路径使用:
img_path=unicode('xxx/xxx/xxx.jpg','utf-8')
读取图片使用:
img=cv_img(img_path)
参考:https://www.zhihu.com/question/67157462/answer/251754530
方案二
方案一的方法会导致保存的图片尺寸过大,因为上述保存方式没有对图像进行压缩,方案二可以解决这个问题:
def cv_imread_CN(image_path):
file_path_gbk=image_path.encode('gbk')
img_mat=cv2.imread(file_path_gbk)
return img_mat
def cv_imwrite_CN(save_path,img):
file_path_gbk=save_path.decode('gbk')
cv2.imwrite(save_path,img)
opencv不接收non-ascii的路径,可能是考虑到跨平台的原因吧,那现在只需要将unicode字符串编码为gbk字节数组,然后把gbk字节数组直接变为字符串,这个字符串就是ascii的路径了。