解决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的socket编程入门教程
Apr 23 Python
Python 实现 贪吃蛇大作战 代码分享
Sep 07 Python
python基于pyDes库实现des加密的方法
Apr 29 Python
Python实现迭代时使用索引的方法示例
Jun 05 Python
python定位xpath 节点位置的方法
Aug 27 Python
Python使用百度api做人脸对比的方法
Aug 28 Python
python 操作hive pyhs2方式
Dec 21 Python
利用pyecharts读取csv并进行数据统计可视化的实现
Apr 17 Python
Pytorch 卷积中的 Input Shape用法
Jun 29 Python
django美化后台django-suit的安装配置操作
Jul 12 Python
python 利用panda 实现列联表(交叉表)
Feb 06 Python
基于Pytorch版yolov5的滑块验证码破解思路详解
Feb 25 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
php5中类的学习
2008/03/28 PHP
使用PHP 5.0创建图形的巧妙方法
2010/10/12 PHP
把1316这个数表示成两个数的和,其中一个为13的倍数,另一个是11的倍数,求这两个数。
2011/06/24 PHP
ThinkPHP框架实现数据增删改
2017/05/07 PHP
PHP读取、解析eml文件及生成网页的方法示例
2017/09/04 PHP
PHP中使用CURL发送get/post请求上传图片批处理功能
2018/10/15 PHP
PHP 实现重载
2021/03/09 PHP
javascript读取RSS数据
2007/01/20 Javascript
一个简单的网站访问JS计数器 刷新1次加1次访问
2012/09/20 Javascript
javascript时间自动刷新实现原理与步骤
2013/01/06 Javascript
jquery实现的图片点击滚动效果
2014/04/29 Javascript
js检测判断日期大于多少天的方法
2015/05/04 Javascript
nodejs实现获取某宝商品分类
2015/05/28 NodeJs
使用AngularJS实现表单向导的方法
2015/06/19 Javascript
JS+CSS实现鼠标滑过时动态翻滚的导航条效果
2015/09/24 Javascript
基于angularjs实现图片放大镜效果
2016/08/31 Javascript
VsCode插件整理(小结)
2017/09/14 Javascript
JS实现的图片选择顺序切换和循环切换功能示例【测试可用】
2018/12/28 Javascript
vue实现将一个数组内的相同数据进行合并
2019/11/07 Javascript
通过实例了解Javascript柯里化流程
2020/03/03 Javascript
[01:33:07]VGJ.T vs Newbee Supermajor 败者组 BO3 第一场 6.6
2018/06/07 DOTA
浅谈Python基础之I/O模型
2017/05/11 Python
pandas 对每一列数据进行标准化的方法
2018/06/09 Python
python requests 测试代理ip是否生效
2018/07/25 Python
python常见字符串处理函数与用法汇总
2019/10/30 Python
Python实现粒子群算法的示例
2021/02/14 Python
Css3新特性应用之形状总结
2016/12/08 HTML / CSS
最耐用行李箱,一箱永流传:Briggs & Riley(全球终身保修)
2017/12/07 全球购物
TCP协议通讯的过程和步骤是什么
2015/10/18 面试题
Unix如何在一行中运行多个命令
2015/05/29 面试题
可贵的沉默教学反思
2014/02/06 职场文书
大学生评语大全
2014/04/18 职场文书
羊脂球读书笔记
2015/06/30 职场文书
《天净沙·秋思》教学反思三篇
2019/11/02 职场文书
MySQL查看表和清空表的常用命令总结
2021/05/26 MySQL
springboot中一些比较常用的注解总结
2021/06/11 Java/Android