解决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修改Excel数据的实例代码
Nov 01 Python
详解Python中的多线程编程
Apr 09 Python
Python求两个文本文件以行为单位的交集、并集与差集的方法
Jun 17 Python
详解Python字符串对象的实现
Dec 24 Python
Python实现二分查找与bisect模块详解
Jan 13 Python
python 实现自动远程登陆scp文件实例代码
Mar 13 Python
python构建自定义回调函数详解
Jun 20 Python
Python简单实现两个任意字符串乘积的方法示例
Apr 12 Python
python数据归一化及三种方法详解
Aug 06 Python
Python中pymysql 模块的使用详解
Aug 12 Python
Python numpy.zero() 初始化矩阵实例
Nov 27 Python
使用Python发现隐藏的wifi
Mar 04 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
BBS(php & mysql)完整版(三)
2006/10/09 PHP
使用XHProf查找PHP性能瓶颈的实例
2017/12/13 PHP
CSDN轮换广告图片轮换效果
2007/03/27 Javascript
JavaScript中的其他对象
2008/01/16 Javascript
javascript 硬盘序列号+其它硬件信息
2008/12/23 Javascript
JavaScript 捕获窗口关闭事件
2009/07/26 Javascript
用jquery实现下拉菜单效果的代码
2010/07/25 Javascript
JS基础之undefined与null的区别分析
2011/08/08 Javascript
jquery实现微博文字输入框 输入时显示输入字数 效果实现
2013/07/12 Javascript
document.write()及其输出内容的样式、位置控制
2013/08/12 Javascript
jQuery中的pushStack实现原理和应用实例
2015/02/03 Javascript
JavaScript类继承及实例化的方法
2015/07/25 Javascript
jQuery实现Flash效果上下翻动的中英文导航菜单代码
2015/09/22 Javascript
JS模态窗口返回值兼容问题的完美解决方法
2016/05/28 Javascript
前端微信支付js代码
2016/07/25 Javascript
JS正则替换去空格的方法
2017/03/24 Javascript
vue控制多行文字展开收起的实现示例
2019/10/11 Javascript
bootstrapValidator表单校验、更改状态、新增、移除校验字段的实例代码
2020/05/19 Javascript
[01:02:46]VGJ.S vs NB 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
[54:10]完美世界DOTA2联赛PWL S2 Magma vs FTD 第二场 11.29
2020/12/03 DOTA
python基础教程之五种数据类型详解
2017/01/12 Python
妙用itchat! python实现久坐提醒功能
2019/11/25 Python
python调用HEG工具批量处理MODIS数据的方法及注意事项
2020/02/18 Python
python进度条显示之tqmd模块
2020/08/22 Python
iframe在移动端的缩放的示例代码
2018/10/12 HTML / CSS
.NET面试问题集
2015/12/08 面试题
写给妈妈的道歉信
2014/01/11 职场文书
幼儿园教师考核制度
2014/02/01 职场文书
十佳美德少年事迹材料
2014/02/05 职场文书
自我鉴定标准格式
2014/03/19 职场文书
主题团日活动总结
2014/06/25 职场文书
贸易经济专业自荐书
2014/06/29 职场文书
土地转让协议书
2014/09/27 职场文书
行政文员岗位职责
2015/02/04 职场文书
横空出世观后感
2015/06/09 职场文书
2019财务毕业实习报告
2019/06/27 职场文书