解决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 相关文章推荐
Python3.5编程实现修改IIS WEB.CONFIG的方法示例
Aug 18 Python
Python实现字符串匹配算法代码示例
Dec 05 Python
uwsgi+nginx部署Django项目操作示例
Dec 04 Python
python3+pyqt5+itchat微信定时发送消息的方法
Feb 20 Python
详解如何从TensorFlow的mnist数据集导出手写体数字图片
Aug 05 Python
使用python实现希尔、计数、基数基础排序的代码
Dec 25 Python
Pytorch Tensor 输出为txt和mat格式方式
Jan 03 Python
tensorboard实现同时显示训练曲线和测试曲线
Jan 21 Python
解决c++调用python中文乱码问题
Jul 29 Python
python 利用PyAutoGUI快速构建自动化操作脚本
May 31 Python
Python进程池与进程锁之语法学习
Apr 11 Python
python使用shell脚本创建kafka连接器
Apr 29 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/10/12 PHP
php模板原理讲解
2013/11/13 PHP
php数组合并的二种方法
2014/03/21 PHP
php+ajax实现的点击浏览量加1
2015/04/16 PHP
PHP微信开发之查询城市天气
2016/06/23 PHP
php类的自动加载操作实例详解
2016/09/28 PHP
解决Laravel 不能创建 migration 的问题
2019/10/09 PHP
jQuery 1.0.2
2006/10/11 Javascript
javascript对select标签的控制(option选项/select)
2013/01/31 Javascript
解决jquery插件冲突的问题
2014/01/23 Javascript
推荐4个原生javascript常用的函数
2015/01/12 Javascript
浅谈jQuery中replace()方法
2015/05/13 Javascript
全面理解JavaScript中的闭包
2016/05/12 Javascript
javascript超过容器后显示省略号效果的方法(兼容一行或者多行)
2016/07/14 Javascript
基于javascript的异步编程实例详解
2017/04/10 Javascript
Angular 5.x 学习笔记之Router(路由)应用
2018/04/08 Javascript
DatePickerDialog 自定义样式及使用全解
2019/07/09 Javascript
微信小程序全选多选效果实现代码解析
2020/01/21 Javascript
[34:44]Liquid vs TNC Supermajor 胜者组 BO3 第二场 6.4
2018/06/05 DOTA
Python原始字符串与Unicode字符串操作符用法实例分析
2017/07/22 Python
pycharm: 恢复(reset) 误删文件的方法
2018/10/22 Python
Python实现 PS 图像调整中的亮度调整
2019/06/28 Python
基于Django的乐观锁与悲观锁解决订单并发问题详解
2019/07/31 Python
基于Python+QT的gui程序开发实现
2020/07/03 Python
Python把图片转化为pdf代码实例
2020/07/28 Python
CSS3利用text-shadow属性实现多种效果的文字样式展现方法
2016/08/25 HTML / CSS
详解HTML5新增标签
2017/11/27 HTML / CSS
html5实现多图片预览上传及点击可拖拽控件
2018/03/15 HTML / CSS
医学求职信
2014/05/28 职场文书
小学社团活动总结
2014/06/27 职场文书
小学校长汇报材料
2014/08/20 职场文书
争先创优活动总结
2014/08/27 职场文书
党支部四风整改方案
2014/10/25 职场文书
2015年林业工作总结
2015/05/14 职场文书
家长意见书
2015/06/04 职场文书
2016年全国助残日活动总结
2016/04/01 职场文书