方案一
解决办法,定义如下函数:
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的路径了。

本文提供了两种解决中文路径下图片读取问题的方法。方案一通过定义函数cv_imread使用numpy和cv2库来读取图片;方案二解决了图片尺寸过大的问题,通过gbk编码处理路径并使用cv2进行图片读写。

1677

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



