#彻底解决# opencv imdecode函数中打开图片,图片变色的问题

大部分人使用imdecode函数打开图像文件是因为 opencv中的imread函数无法打开中文估路径下的图像文件,网上使用imdecode函数打开图片的语法有很多这里简单列举一些:

方法一:

def cv_imread(file_path = ""):
    file_path_gbk = file_path.encode('gbk')        # unicode转gbk,字符串变为字节数组
    img_mat = cv2.imread(file_path_gbk.decode())  # 字节数组直接转字符串,不解码
    return img_mat

方法二:

import os
def cv_imread(file_path):
    root_dir, file_name = os.path.split(file_path)
    pwd = os.getcwd()
    if root_dir:
        os.chdir(root_dir)
    cv_img = cv2.imread(file_name)
    os.chdir(pwd)
    return cv_img

方法三:

def cv_img_rgb(path):
    #用matplotlib的路径
    img=plt.imread(path)
    #因为opencv读取是按照BGR的顺序,所以这里转换一下即可
    img_rgb=cv2.cvtColor(img,cv2.COLOR_BGR2RGB)
    return img_rgb

方法四:

def cv_imread(filePath):
    cv_img = cv2.imdecode(np.fromfile(filePath, dtype=np.uint8), -1)
    return cv_img

但是这些方法都有个问题。就是读取的图片文件都存在偏色问题,如果是灰度图片还会出现图片面目全非的情况。直到我找到下边这个方法:

import cv2
import numpy as np
cv2.imdecode(np.fromfile("D:\\haha哈哈.png",dtype=np.uint8),,cv2.IMREAD_COLOR)

用此方法读取图片文件不仅能读取中文路径下的图片文件,并且不会出现失真的现象。
参考:
[1]https://www.zhihu.com/question/67157462
[2]https://blog.csdn.net/u011311291/article/details/81457278

发布了59 篇原创文章 · 获赞 2 · 访问量 4667

猜你喜欢

转载自blog.csdn.net/lch551218/article/details/104565240
今日推荐