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

猜你喜欢

转载自blog.csdn.net/qjyws/article/details/129939694