解决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中的 is 操作符
Dec 26 Python
利用Python yagmail三行代码实现发送邮件
May 11 Python
opencv实现图片模糊和锐化操作
Nov 19 Python
详解python多线程之间的同步(一)
Apr 03 Python
python实现动态创建类的方法分析
Jun 25 Python
python编写简单端口扫描器
Sep 04 Python
基于python2.7实现图形密码生成器的实例代码
Nov 05 Python
Python log模块logging记录打印用法解析
Jan 20 Python
解决Tensorboard可视化错误:不显示数据 No scalar data was found
Feb 15 Python
python上传时包含boundary时的解决方法
Apr 08 Python
Python 连接 MySQL 的几种方法
Sep 09 Python
python list的index()和find()的实现
Nov 16 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的5个入手程序
2006/11/23 PHP
jQuery 源码分析笔记
2011/05/25 PHP
Laravel框架实现抢红包功能示例
2019/10/31 PHP
用Greasemonkey 脚本收藏网站会员信息到本地
2009/10/26 Javascript
解析javascript 浏览器关闭事件
2013/07/08 Javascript
使用jquery操作session方法分享
2015/01/22 Javascript
javascript的switch用法注意事项分析
2015/02/02 Javascript
js实现漂浮回顶部按钮实例
2015/05/06 Javascript
jQuery实现html元素拖拽
2015/07/21 Javascript
js实现仿微博滚动显示信息的效果
2015/12/21 Javascript
详解Javascript模板引擎mustache.js
2016/01/20 Javascript
javascript中去除数组重复元素的实现方法【实例】
2016/04/12 Javascript
js实现砖头在页面拖拉效果
2020/11/20 Javascript
微信小程序实现图片自适应(支持多图)
2017/01/25 Javascript
AngularJS自定义指令之复制指令实现方法
2017/05/18 Javascript
Angular 封装并发布组件的方法示例
2018/04/19 Javascript
vue 实现数字滚动增加效果的实例代码
2018/07/06 Javascript
微信小程序http连接访问解决方案的示例
2018/11/05 Javascript
vue-router传递参数的几种方式实例详解
2018/11/13 Javascript
Python list操作用法总结
2015/11/10 Python
基于Python的关键字监控及告警
2017/07/06 Python
matplotlib简介,安装和简单实例代码
2017/12/26 Python
python读文件保存到字典,修改字典并写入新文件的实例
2018/04/23 Python
使用python爬取B站千万级数据
2018/06/08 Python
在django中图片上传的格式校验及大小方法
2019/07/28 Python
CSS3实现缺角矩形,折角矩形以及缺角边框
2019/12/20 HTML / CSS
公务员的自我鉴定
2013/10/26 职场文书
党员违纪检讨书
2014/02/18 职场文书
《莫高窟》教学反思
2014/02/25 职场文书
《伯牙绝弦》教学反思
2014/03/02 职场文书
三分钟英语演讲稿
2014/04/24 职场文书
优质护理服务演讲稿
2014/05/07 职场文书
关于安全的演讲稿
2014/05/09 职场文书
2016教师校本研修心得体会
2016/01/08 职场文书
python pyhs2 的安装操作
2021/04/07 Python
全新239军机修复记
2022/04/05 无线电