由于编码问题,opencv的cv2.imread无法直接读取带中文路径中的图片,同样cv2.imwrite也无法直接把图片写入到中文路径下的文件夹中,这时候就得换一种方法了,改进代码如下:
import cv2
#定义一个叫cv_imread的函数来读取中文路径的图片,filePath是图片的完整路径
def cv_imread(filePath): #读取中文路径的图片
cv_img=cv2.imdecode(np.fromfile(filePath,dtype=np.uint8),cv2.IMREAD_UNCHANGED)
#imdecode读取的图像默认会按BGR通道来排列图像矩阵,如果后续需要RGB可以通过如下转换
#cv_img=cv2.cvtColor(cv_img,cv2.COLOR_BGR2RGB)
return cv_img
#定义一个叫cv_imwrite的函数来往中文路径写入img图片,filePathName是待写入的文件夹和图片名字组成的完整
#路径,如filePathName = C:\\user\\Desktop\\test.jpg
def cv_imwrite(filePathName, img):
try:
_, cv_img = cv2.imencode(".jpg", img)[1].tofile(filePathName)
return True
except:
return False