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


Posted in Python onJune 02, 2020

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

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

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

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

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

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

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

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的问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python网络编程学习笔记(四):域名系统
Jun 09 Python
Python实现计算文件夹下.h和.cpp文件的总行数
Apr 23 Python
基于Python对象引用、可变性和垃圾回收详解
Aug 21 Python
详解Python异常处理中的Finally else的功能
Dec 29 Python
几种实用的pythonic语法实例代码
Feb 24 Python
python3.5 email实现发送邮件功能
May 22 Python
Python实现的矩阵转置与矩阵相乘运算示例
Mar 26 Python
Python学习笔记基本数据结构之序列类型list tuple range用法分析
Jun 08 Python
在pytorch中查看可训练参数的例子
Aug 18 Python
总结Pyinstaller的坑及终极解决方法(小结)
Sep 21 Python
python 实现图片裁剪小工具
Feb 02 Python
使用Python制作一个数据预处理小工具(多种操作一键完成)
Feb 07 Python
Pandas读取csv时如何设置列名
Jun 02 #Python
python os模块常用的29种方法使用详解
Jun 02 #Python
完美解决pycharm 不显示代码提示问题
Jun 02 #Python
PyQt5.6+pycharm配置以及pyinstaller生成exe(小白教程)
Jun 02 #Python
基于python实现查询ip地址来源
Jun 02 #Python
新版Pycharm中Matplotlib不会弹出独立的显示窗口的问题
Jun 02 #Python
Pycharm生成可执行文件.exe的实现方法
Jun 02 #Python
You might like
PHP 引用是个坏习惯
2010/03/12 PHP
在WAMP环境下搭建ZendDebugger php调试工具的方法
2011/07/18 PHP
php 模拟POST提交的2种方法详解
2013/06/17 PHP
php+redis实现商城秒杀功能
2020/11/19 PHP
PHP中使用mpdf 导出PDF文件的实现方法
2018/10/22 PHP
PHP使用phpunit进行单元测试示例
2019/09/23 PHP
Thinkphp 框架配置操作之配置加载与读取配置实例分析
2020/05/15 PHP
jMessageBox 基于jQuery的窗口插件
2009/12/09 Javascript
js为空或不是对象问题的快速解决方法
2013/12/11 Javascript
jQuery 计算iframe 窗口大小的方法
2014/05/13 Javascript
微信小程序 弹窗自定义实例代码
2017/03/08 Javascript
Angularjs cookie 操作实例详解
2017/09/27 Javascript
Vue一次性简洁明了引入所有公共组件的方法
2018/11/28 Javascript
解决React在安装antd之后出现的Can't resolve './locale'问题(推荐)
2020/05/03 Javascript
2020京东618叠蛋糕js脚本(亲测好用)
2020/06/02 Javascript
three.js欧拉角和四元数的使用方法
2020/07/26 Javascript
[29:23]2014 DOTA2国际邀请赛中国区预选赛 LGD-GAMING VS CIS 第一场1
2014/05/23 DOTA
Python学习笔记(二)基础语法
2014/06/06 Python
python函数局部变量用法实例分析
2015/08/04 Python
python机器学习案例教程——K最近邻算法的实现
2017/12/28 Python
解决nohup重定向python输出到文件不成功的问题
2018/05/11 Python
Python实现将多个空格换为一个空格.md的方法
2018/12/20 Python
详解python编译器和解释器的区别
2019/06/24 Python
基于pycharm实现批量修改变量名
2020/06/02 Python
python实现mean-shift聚类算法
2020/06/10 Python
Python Switch Case三种实现方法代码实例
2020/06/18 Python
python 基于opencv 实现一个鼠标绘图小程序
2020/12/11 Python
html5如何及时更新缓存文件(js、css或图片)
2013/06/24 HTML / CSS
高中生校园生活自我评价
2013/09/19 职场文书
学生会主席事迹材料
2014/01/28 职场文书
业务总经理岗位职责
2014/02/03 职场文书
数学检讨书1000字
2014/02/24 职场文书
加薪通知
2015/04/25 职场文书
导游词之杭州西湖
2019/09/19 职场文书
解决Pytorch中关于model.eval的问题
2021/05/22 Python
详解Golang如何实现支持随机删除元素的堆
2022/09/23 Python