Skip to content

函数介绍

cv2.imdecode() 函数从指定的内存缓存中读取数据,并把数据转换(解码)成图像格式;主要用于从网络传输数据中恢复出图像。
cv2.imencode() 函数是将图片格式转换(编码)成流数据,赋值到内存缓存中;主要用于图像数据格式的压缩,方便网络传输。

opencv读取带中文路径图片

一般情况下读取方法:

import cv2
img = cv2.imread('./第三次实训/L05/digit/img.png')   

因为opencv不支持中文路径的读取,会产生报错,需要进行修改如下:

img= cv2.imdecode(np.fromfile('./第三次实训/L05/digit/img.png', dtype=np.uint8), -1)
# imdecode读取的是rgb,如果后续需要opencv处理的话,需要转换成bgr,转换后图片颜色会变化
img = cv2.cvtColor(img, cv2.COLOR_RGB2BGR)  #cv2.imread读取的图片效果一致

还可以选择用PIL库读取中文路径图片,再转化为opencv格式:

from PIL import Image
import numpy as np
import cv2
img = Image.open(img_path)
img = cv2.cvtColor(np.asarray(img),cv2.COLOR_RGB2BGR)

opencv保存带中文路径图片

一般情况下保存的方法:

import cv2
cv2.imwrite("./第三次实训/L05/digit/my.png",img1)   

cv2不支持中文路径,报错,可以修改成:

# cv2.imencode(保存格式, 保存图片)[1].tofile(保存路径)
cv2.imencode('.png',img1)[1].tofile("./第三次实训/L05/digit/my.png")

cv2.imdecode与cv2.imencode参数和具体用法