opencv-python imread no es compatible con la solución de ruta china

imread en la biblioteca opencv se usa para leer archivos de imagen, pero esto no admite rutas chinas.
Para la ruta china, debe usar el método imdecode.

1. Lee imágenes con caracteres chinos

Tanto imdecode como imread leen imágenes a la manera de bgr. opencv realiza el procesamiento de imágenes, también bgr.

Vi a alguien en Internet diciendo que imdecode lee imágenes en rgb, y cuando usas opencv para el procesamiento de imágenes, necesitas hacer alguna conversión (rgb a bgr);
pero lo probé yo mismo, y en realidad es bgr.

# 读取带中文的图片,bgr
def cv_imread(file_path):
    cv_img = cv.imdecode(np.fromfile(file_path, dtype=np.uint8), -1)
    return cv_img

Hay un problema con el siguiente método que encontré en Internet:
# 报错: 'utf-8' codec can't decode byte 0xb2 in position 24: invalid start byte
def cv_imread2(file_path=""):
    file_path_gbk = file_path.encode('gbk')  # unicode转gbk,字符串变为字节数组
    img_mat = cv.imread(file_path_gbk.decode())  # 字节数组直接转字符串,不解码
    return img_mat

2. Verifique que imdecode esté almacenado en bgr

Como todos sabemos, cv2.imread se almacena en bgr, así que aquí usamos cv2.imread para comparar, y puede ver el valor gris final de BGR.

# cv.imdecode 和 cv.imread,读图都是bgr方式。以下可证明两者方式一样。
img = cv_imread("./彩色图像.tiff")
B, G, R = cv.split(img)
img2 = cv.imread("./color.tiff")
B2, G2, R2 = cv.split(img2)  # 拆分通道,opencv存储图片是bgr方式

3. Guarda imágenes con caracteres chinos

# 保存带中文的图片
def cv_imwrite(file_path):
    cv.imencode('.tiff', img)[1].tofile(out_path)  # 保存带中文的图片,opencv保存的tiff,默认是lzw压缩

4. Llamar

if __name__ == "__main__":
    img = cv_imread("./彩色图像.tiff")
    # cv.namedWindow('ReadImgCN', cv.WINDOW_AUTOSIZE)  # 图片太大,不采用自适应
    cv.namedWindow('ReadImgCN', cv.WINDOW_NORMAL)
    cv.resizeWindow('ReadImgCN', 1000, 1000)
    cv.imshow("ReadImgCN", img)
    cv.waitKey(0)
    cv.destroyAllWindows()

    out_path = './测试.tiff'
    cv_imwrite(out_path)

apéndice

Documentos de ayuda para imread e imdecode oficiales

Supongo que te gusta

Origin blog.csdn.net/gdxb666/article/details/128636569
Recomendado
Clasificación