解决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读取ini文件、操作mysql、发送邮件实例
Jan 01 Python
python实现指定字符串补全空格的方法
Apr 30 Python
Python批量修改文本文件内容的方法
Apr 29 Python
Python3安装Pymongo详细步骤
May 26 Python
python 将数据保存为excel的xls格式(实例讲解)
May 03 Python
Python基于多线程操作数据库相关问题分析
Jul 11 Python
Python3.5内置模块之time与datetime模块用法实例分析
Apr 27 Python
Python 监测文件是否更新的方法
Jun 10 Python
详解Scrapy Redis入门实战
Nov 18 Python
pytho matplotlib工具栏源码探析一之禁用工具栏、默认工具栏和工具栏管理器三种模式的差异
Feb 25 Python
python使用pywinauto驱动微信客户端实现公众号爬虫
May 19 Python
Python的property属性详细讲解
Apr 11 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中Array2xml类实现数组转化成XML实例
2014/12/08 PHP
php转换颜色为其反色的方法
2015/04/27 PHP
在php7中MongoDB实现模糊查询的方法详解
2017/05/03 PHP
php实现图片压缩处理
2020/09/09 PHP
javascript算法学习(直接插入排序)
2011/04/12 Javascript
JavaScript 学习笔记之一jQuery写法图片等比缩放以及预加载
2012/06/28 Javascript
javascript-表格排序(降序/反序)实现介绍(附图)
2013/05/30 Javascript
jquery中checkbox全选失效的解决方法
2014/12/26 Javascript
JavaScript中实现依赖注入的思路分享
2015/01/15 Javascript
jQuery实现DIV层淡入淡出拖动特效的方法
2015/02/13 Javascript
JavaScript删除数组元素的方法
2015/03/20 Javascript
JQuery 设置checkbox值二次无效的解决方法
2016/07/22 Javascript
URL中“#” “?” &“”号的作用浅析
2017/02/04 Javascript
浅谈vue.js中v-for循环渲染
2017/07/26 Javascript
Vue动态组件实例解析
2017/08/20 Javascript
jQuery实现form表单序列化转换为json对象功能示例
2018/05/23 jQuery
Vue2.2.0+新特性整理及注意事项
2018/08/22 Javascript
vue实现todolist基本功能以及数据存储功能实例详解
2019/04/11 Javascript
js如何实现元素曝光上报
2019/08/07 Javascript
详解Vite的新体验
2021/02/22 Javascript
Python下opencv图像阈值处理的使用笔记
2019/08/04 Python
Python json模块与jsonpath模块区别详解
2020/03/05 Python
Python Tornado之跨域请求与Options请求方式
2020/03/28 Python
python的launcher用法知识点总结
2020/08/07 Python
Python 制作查询商品历史价格的小工具
2020/10/20 Python
Lookfantastic西班牙官网:英国知名美妆购物网站
2018/06/13 全球购物
法国娇韵诗官方旗舰店:Clarins是来自法国的天然护肤品牌
2018/06/30 全球购物
Math.round(11.5)等於多少? Math.round(-11.5)等於多少?
2015/01/27 面试题
新郎婚宴答谢词
2014/01/19 职场文书
西式婚礼主持词
2014/03/13 职场文书
新闻人物通讯稿
2014/10/09 职场文书
房屋产权证明书
2015/06/19 职场文书
Python 数据可视化之Seaborn详解
2021/11/02 Python
MongoDB误操作后使用oplog恢复数据
2022/04/11 MongoDB
《勇者辞职不干了》ED主题曲无字幕动画MV公开
2022/04/13 日漫
Docker安装MySql8并远程访问的实现
2022/07/07 Servers