解决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使用rabbitmq实现网络爬虫示例
Feb 20 Python
Python中Collection的使用小技巧
Aug 18 Python
Python 中pandas.read_excel详细介绍
Jun 23 Python
Python程序员面试题 你必须提前准备!(答案及解析)
Jan 23 Python
Python模拟简单电梯调度算法示例
Aug 20 Python
Python产生Gnuplot绘图数据的方法
Nov 09 Python
python全栈要学什么 python全栈学习路线
Jun 28 Python
如何安装2019Pycharm最新版本(详细教程)
Sep 26 Python
在python中做正态性检验示例
Dec 09 Python
Python Flask上下文管理机制实例解析
Mar 16 Python
python 安装移动复制第三方库操作
Jul 13 Python
Python通过递归函数输出嵌套列表元素
Oct 15 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
咖啡机如何保养和日常清洁?
2021/03/03 冲泡冲煮
PHP简单系统数据添加以及数据删除模块源文件下载
2008/06/07 PHP
《PHP编程最快明白》第二讲 数字、浮点、布尔型、字符串和数组
2010/11/01 PHP
PHP插入排序实现代码
2013/04/04 PHP
PHP中unset,array_splice删除数组中元素的区别
2014/07/28 PHP
ThinkPHP安装和设置
2015/07/27 PHP
浅析ThinkPHP缓存之快速缓存(F方法)和动态缓存(S方法)(日常整理)
2015/10/26 PHP
PHP中header用法小结
2016/05/23 PHP
PHP memcache在微信公众平台的应用方法示例
2017/09/13 PHP
php爬取天猫和淘宝商品数据
2018/02/23 PHP
javascript Ext JS 状态默认存储时间
2009/02/15 Javascript
js checkbox(复选框) 使用集锦
2009/04/28 Javascript
统计出现最多的字符次数的js代码
2010/12/03 Javascript
Javascript中的回调函数和匿名函数的回调示例介绍
2014/05/12 Javascript
jquery中change()用法实例分析
2015/02/06 Javascript
深入理解JavaScript中的箭头函数
2015/07/28 Javascript
Bootstrap每天必学之前端开发框架
2015/11/19 Javascript
React Native 通告消息竖向轮播组件的封装
2020/08/25 Javascript
在React 组件中使用Echarts的示例代码
2017/11/08 Javascript
vue.js 中使用(...)运算符报错的解决方法
2018/08/09 Javascript
微信小程序onLaunch异步,首页onLoad先执行?
2018/09/20 Javascript
Ant Design的Table组件去除
2020/10/24 Javascript
可用于监控 mysql Master Slave 状态的python代码
2013/02/10 Python
python自动zip压缩目录的方法
2015/06/28 Python
python实现随机森林random forest的原理及方法
2017/12/21 Python
Python列表list排列组合操作示例
2018/12/18 Python
对python调用RPC接口的实例详解
2019/01/03 Python
关于TensorFlow新旧版本函数接口变化详解
2020/02/10 Python
维多利亚的秘密官方网站:Victoria’s Secret
2018/10/24 全球购物
学生个人自我鉴定范文
2014/03/28 职场文书
教师工作表现自我评价
2015/03/05 职场文书
2015年中秋节演讲稿
2015/03/20 职场文书
2016个人廉洁自律承诺书
2016/03/25 职场文书
HTML5简单实现添加背景音乐的几种方法
2021/05/12 HTML / CSS
详解Mysql和Oracle之间的误区
2021/05/18 MySQL
讲解MySQL增删改操作
2022/05/06 MySQL