解决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 面向对象 成员的访问约束
Dec 23 Python
Python牛刀小试密码爆破
Feb 03 Python
小结Python用fork来创建子进程注意事项
Jul 03 Python
Python聊天室实例程序分享
Jan 05 Python
python机器学习之神经网络(一)
Dec 20 Python
python远程连接MySQL数据库
Apr 19 Python
python的pygal模块绘制反正切函数图像方法
Jul 16 Python
flask框架路由常用定义方式总结
Jul 23 Python
Python中最好用的命令行参数解析工具(argparse)
Aug 23 Python
Python获取时间戳代码实例
Sep 24 Python
Django 后台带有字典的列表数据与页面js交互实例
Apr 03 Python
使用bandit对目标python代码进行安全函数扫描的案例分析
Jan 27 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 select,radio和checkbox默认选择的实现方法
2010/05/15 PHP
WordPress开发中的get_post_custom()函数使用解析
2016/01/04 PHP
PHP数组去重比较快的实现方式
2016/01/19 PHP
php接口隔离原则实例分析
2019/11/11 PHP
Javascript 模式实例 观察者模式
2009/10/24 Javascript
ajax页面无刷新 IE下遭遇Ajax缓存导致数据不更新的问题
2012/12/11 Javascript
js的压缩及jquery压缩探讨(提高页面加载性能/保护劳动成果)
2013/01/29 Javascript
javascript中数组的多种定义方法和常用函数简介
2014/05/09 Javascript
全面解析Bootstrap中tab(选项卡)的使用方法
2016/06/06 Javascript
JS 调用微信扫一扫功能
2016/12/22 Javascript
JavaScript 栈的详解及实例代码
2017/01/22 Javascript
jQuery实现贪吃蛇小游戏(附源码下载)
2017/03/04 Javascript
fullpage.js最后一屏滚动方式
2018/02/06 Javascript
vue2.0实现音乐/视频播放进度条组件
2018/06/06 Javascript
微信小程序实现带缩略图轮播效果
2018/11/04 Javascript
解析JS在获取当前月的最后一天遇到的坑
2019/08/30 Javascript
Vue项目打包部署到iis服务器的配置方法
2019/10/14 Javascript
微信小程序间使用navigator跳转传值问题实例分析
2020/03/27 Javascript
在Python的setuptools框架下生成egg的教程
2015/04/13 Python
Python文档生成工具pydoc使用介绍
2015/06/02 Python
Python中str.format()详解
2017/03/12 Python
Python决策树分类算法学习
2017/12/22 Python
pytorch 实现查看网络中的参数
2020/01/06 Python
完美解决keras 读取多个hdf5文件进行训练的问题
2020/07/01 Python
一篇文章搞懂python的转义字符及用法
2020/09/03 Python
python unichr函数知识点总结
2020/12/16 Python
CSS3 旋转立方体问题详解
2020/01/09 HTML / CSS
使用HTML5里的classList操作CSS类
2016/06/28 HTML / CSS
《都江堰》教学反思
2014/02/07 职场文书
课例研修方案
2014/05/31 职场文书
社区志愿者培训方案
2014/06/10 职场文书
戒毒悔改检讨书
2014/09/21 职场文书
世界环境日活动总结
2015/02/11 职场文书
2015年大学教师工作总结
2015/05/20 职场文书
2016年寒假家长评语
2015/10/10 职场文书
2019大学竞选班长发言稿
2019/06/27 职场文书