#彻底解决# 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

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

energy_百分百

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值