解决python cv2.imread 读取中文路径的图片返回为None的问题

 更新时间:2020年06月02日 10:12:30   作者:陶将  
这篇文章主要介绍了解决python cv2.imread 读取中文路径的图片返回为None的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

使用cv2读取图片时,输出图片形状大小时出现报错“ 'NoneType' object has no attribute shape”,后来排查发现读取图片的返回值image为None, 这就说明图片根本就没有被读取。

下面图片是问题问题解决后,为了更好的展示,写的代码展示,这是正常的因果关系,找错误排查时是从下往上推。

使用PIL读取图像,能够成功读取图片,借此了解图片的大小和格式,代码如下图所示:

cv.imread函数能够成功读取非中文路径的图片,所以就想到是不是中文路径的问题,opencv中opencv不接受non-ascii的路径,解决方法就是先用先用np.fromfile()读取为np.uint8格式,再使用cv2.imdecode()解码,如下:

np.fromfile(filename, dtype)是从以dtype形式读取文件

cv2.imdecode()函数从指定的内存缓存中读取数据,并把数据转换(解码)成图像格式;主要用于从网络传输数据中恢复出图像

补充知识:python3.x, cv2.imread()导入图片失败,none

首先在第一次运行时,命令行中错误:

ValueError: embedded null character

发现是因为导入的图片路径中存在\0

python3.x, cv2.imread()导入图片失败,none

1. 路径中无中文名

2. pip list 发现也有opencv-python,(虽然我又重新下了一遍

而这些图片用PS打开的时候,会报错:无法完成请求,因为找到不知名的或无效的JPEG标识符类型

图片是我从网站上爬下来的,改过其后缀名为jpg, 源图真正的后缀名是gif.

所以要重置一些文件的格式,比如用画图重新保存为jpg格式。

这里注意:

后缀是一个标签,表明文件的类型和格式,至于文件到底是不是该格式就另说了。有时候改了后缀名,文件仍能被打开(我遇到的情况),是因为文件内容还有文件头,有些应用程序会根据文件头中的信息来判断文件的格式(比如windows自带的照片查看器)而不是通过后缀名。所以切实有效的方式还是通过格式转换软件来转换格式。

应用python PIL包的Image模块将图片重新转换格式为jpg(彻底转换格式,而不是只改后缀)

(当然如果只需要几张图的话,直接用画图打开另存jpg格式就好了)

img = Image.open(file_path+'/'+files[j]).convert('RGB')
img.save(file_path+'/'+files[j]

注意要有个convert('RGB'),不然报错OSError: cannot write mode P as JPEG

以上这篇解决python cv2.imread 读取中文路径的图片返回为None的问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • 推荐10款最受Python开发者欢迎的Python IDE

    推荐10款最受Python开发者欢迎的Python IDE

    这篇文章收集了一些对开发者非常有帮助的,最好的10款Python IDE,包括Vim,Eclipse with PyDev,Sublime Text,PyCharm等知明Python开发工具
    2018-09-09
  • Python hashlib加密模块常用方法解析

    Python hashlib加密模块常用方法解析

    这篇文章主要介绍了Python hashlib加密模块常用方法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-12-12
  • Python使用unittest进行有效测试的示例详解

    Python使用unittest进行有效测试的示例详解

    这篇文章主要介绍了如何使用 unittest 来编写和运行单元测试,希望通过阅读本文,大家能了解 unittest 的基本使用方法,以及如何使用 unittest 中的断言方法和测试用例组织结构
    2023-06-06
  • Python使用paddleOCR批量识别pdf的方法

    Python使用paddleOCR批量识别pdf的方法

    PaddleOCR可以在图像、文本、表格等多种场景下进行文字识别,本文主要介绍了Python使用paddleOCR批量识别pdf的方法,具有一定的参考价值,感兴趣的可以了解一下
    2024-03-03
  • python手写选择排序方式(不用sort)

    python手写选择排序方式(不用sort)

    这篇文章主要介绍了python手写选择排序方式(不用sort),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-02-02
  • Python Allure库的使用示例教程

    Python Allure库的使用示例教程

    Python Allure库是一个实用可靠的测试报告框架,它几乎可以与Python的其他库和框架无缝集成,利用Python Allure库,可以轻松生成易于阅读的测试报告,让测试变得更加简单便捷,本文主要介绍Python Allure库的使用,感兴趣的朋友一起看看吧
    2023-12-12
  • Python提取Word中图片的实现步骤

    Python提取Word中图片的实现步骤

    本文主要介绍了Python提取Word中图片的实现步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-07-07
  • Python爬虫工具requests-html使用解析

    Python爬虫工具requests-html使用解析

    这篇文章主要介绍了Python爬虫工具requests-html使用解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-04-04
  • 安装PyInstaller失败问题解决

    安装PyInstaller失败问题解决

    这篇文章主要介绍了安装PyInstaller失败问题解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-12-12
  • Python中的迭代器漫谈

    Python中的迭代器漫谈

    这篇文章主要介绍了Python中的迭代器漫谈,本文主要讲解range函数和xrange函数性能区别,需要的朋友可以参考下
    2015-02-02

最新评论