解决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之list和str比较
Sep 20 Python
在服务器端实现无间断部署Python应用的教程
Apr 16 Python
带你了解python装饰器
Jun 15 Python
Python的mysql数据库的更新如何实现
Jul 31 Python
浅谈python中的正则表达式(re模块)
Oct 17 Python
Python爬取当当、京东、亚马逊图书信息代码实例
Dec 09 Python
Python3.5基础之NumPy模块的使用图文与实例详解
Apr 24 Python
基于Python检测动态物体颜色过程解析
Dec 04 Python
使用python去除图片白色像素的实例
Dec 12 Python
python+selenium实现12306模拟登录的步骤
Jan 21 Python
Pytorch DataLoader shuffle验证方式
Jun 02 Python
python接口测试返回数据为字典取值方式
Feb 12 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
基于mysql的论坛(4)
2006/10/09 PHP
php SQL之where语句生成器
2009/03/24 PHP
解析php下载远程图片函数 可伪造来路
2013/06/25 PHP
thinkphp的c方法使用示例
2014/02/24 PHP
yii,CI,yaf框架+smarty模板使用方法
2015/12/29 PHP
网站导致浏览器崩溃的原因总结(多款浏览器) 推荐
2010/04/15 Javascript
js带按钮的提示框可供选择示例代码
2013/09/17 Javascript
JQuery判断HTML元素是否存在的两种解决方法
2013/12/26 Javascript
把jQuery的类、插件封装成seajs的模块的方法
2014/03/12 Javascript
jQuery实现鼠标悬停显示提示信息窗口的方法
2015/04/30 Javascript
js图片轮播手动切换效果
2015/11/10 Javascript
Vue.js基础指令实例讲解(各种数据绑定、表单渲染大总结)
2017/07/03 Javascript
Angular搜索 过滤 批量删除 添加 表单验证功能集锦(实例代码)
2017/10/25 Javascript
jquery无缝图片轮播组件封装
2020/11/25 jQuery
vue 移动端注入骨架屏的配置方法
2019/06/25 Javascript
解决$store.getters调用不执行的问题
2019/11/08 Javascript
js禁止查看源文件屏蔽Ctrl+u/s、F12、右键等兼容IE火狐chrome
2020/10/01 Javascript
[02:08]什么藏在DOTA2 TI9“小紫本”里?斧王历险记告诉你!
2019/05/17 DOTA
python操作MySQL数据库具体方法
2013/10/28 Python
用Python的Django框架来制作一个RSS阅读器
2015/07/22 Python
python开发之tkinter实现图形随鼠标移动的方法
2015/11/11 Python
Python中Django发送带图片和附件的邮件
2017/03/31 Python
Python使用ConfigParser模块操作配置文件的方法
2018/06/29 Python
解决PyCharm import torch包失败的问题
2018/10/13 Python
浅谈解除装饰器作用(python3新增)
2018/10/15 Python
python 实现矩阵按对角线打印
2019/11/29 Python
详解java调用python的几种用法(看这篇就够了)
2020/12/10 Python
谈一谈HTML5本地存储技术
2016/03/02 HTML / CSS
什么是java序列化,如何实现java序列化
2012/11/14 面试题
PyQt QMainWindow的使用示例
2021/03/24 Python
工商管理专业实习大学生自我鉴定
2013/09/19 职场文书
环境工程大学生个人的自我评价
2013/10/08 职场文书
自我鉴定模板
2013/10/29 职场文书
市级三好学生事迹材料
2014/08/27 职场文书
python删除csv文件的行列
2021/04/06 Python
nginx访问报403错误的几种情况详解
2022/07/23 Servers