Python:loadsave.cpp (239) cv::findDecoder imread_(‘‘)can‘t open/read file: check file path/integrity

项目场景:

使用Python opencv库读入图片,但是显示读入的图片为None:

项目代码如下:

    if file_path_name:
        img = cv2.imread(file_path_name)
        if img is None:
            print(f"Failed to load image: {file_path_name}")

问题描述

以上做法发现图片无法读出,打印出日志如下:

[ WARN:0@11.349] global D:\a\opencv-python\opencv-python\opencv\modules\imgcodecs\src\loadsave.cpp (239) cv::findDecoder imread_('D:美丽心灵.jpg'): can't open/read file: check file path/integrity

原因分析:

经过搜索,opencv无法读入图片的可能问题如下:

1.图片文件损坏
2.图片格式不支持

但是这里看到日志,我看到Decoder脑子里灵光一闪,会不会是Opencv库不支持中文字符,查证如下:

OpenCV 库是一个计算机视觉库,它是使用 C++ 编写的,因此,它需要在代码中使用 C++ 字符串来表示文件路径。

C++ 字符串默认采用 ASCII 编码,不支持中文字符,因此,当你传入一个包含中文字符的路径时,它可能会出现编码错误或无法找到文件的问题。

经过验证,确实如此

解决思路

  • 将所有路径的英文改为中文,亲测有效
  • 如果文件过多,不想一个一个改,或者写代码花费精力,可以尝试以下代码
def cv_imread(file_path):
    cv_img = cv2.imdecode(np.fromfile(file_path,dtype=np.uint8),-1)
    return cv_img
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值