解决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实现基于二叉树存储结构的堆排序算法示例
Dec 08 Python
win10下tensorflow和matplotlib安装教程
Sep 19 Python
在pycharm中python切换解释器失败的解决方法
Oct 29 Python
python:接口间数据传递与调用方法
Dec 17 Python
浅谈Python3中strip()、lstrip()、rstrip()用法详解
Apr 29 Python
Python日志无延迟实时写入的示例
Jul 11 Python
Python实用库 PrettyTable 学习笔记
Aug 06 Python
python学生管理系统的实现
Apr 05 Python
Jupyter Notebook安装及使用方法解析
Nov 12 Python
如何使用PyCharm及常用配置详解
Jun 03 Python
Python 如何将integer转化为罗马数(3999以内)
Jun 05 Python
Python实现信息管理系统
Jun 05 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 计算两个时间戳相隔的时间的函数(小时)
2009/12/18 PHP
用php实现让页面只能被百度gogole蜘蛛访问的方法
2009/12/29 PHP
php array_udiff_assoc 计算两个数组的差集实例
2016/11/12 PHP
PHP基于自增数据如何生成不重复的随机数示例
2017/05/19 PHP
PHP构造二叉树算法示例
2017/06/21 PHP
javascript 出生日期和身份证判断大全
2008/11/13 Javascript
JavaScript入门教程(2) JS基础知识
2009/01/31 Javascript
Tips 带三角可关闭的文字提示
2010/10/06 Javascript
如何制作浮动广告 JavaScript制作浮动广告代码
2012/12/30 Javascript
jQuery判断checkbox(复选框)是否被选中以及全选、反选实现代码
2014/02/21 Javascript
jquery选择器原理介绍($()使用方法)
2014/03/25 Javascript
基于jQuery实现的图片切换焦点图整理
2014/12/07 Javascript
jQuery移动端图片上传组件
2016/06/12 Javascript
AngularJS 中的事件详解
2016/07/28 Javascript
完美实现js焦点轮播效果(二)(图片可滚动)
2017/03/07 Javascript
JS实现的简单折叠展开动画效果示例
2018/04/28 Javascript
关于JavaScript中高阶函数的魅力详解
2018/09/07 Javascript
javascript面向对象三大特征之多态实例详解
2019/07/24 Javascript
[01:34]2014DOTA2展望TI 剑指西雅图VG战队专访
2014/06/30 DOTA
python使用Queue在多个子进程间交换数据的方法
2015/04/18 Python
Python素数检测实例分析
2015/06/15 Python
判断网页编码的方法python版
2016/08/12 Python
关于python的list相关知识(推荐)
2017/08/30 Python
django利用request id便于定位及给日志加上request_id
2018/08/26 Python
Python 通过微信控制实现app定位发送到个人服务器再转发微信服务器接收位置信息
2019/08/05 Python
Python安装与卸载流程详细步骤(图解)
2020/02/20 Python
Html5移动端网页端适配(js+rem)
2021/02/03 HTML / CSS
美国家居装饰网上商店:Lulu & Georgia
2019/09/14 全球购物
PHP高级工程师面试问题推荐
2013/01/18 面试题
投标单位介绍信
2014/01/09 职场文书
生产部管理制度
2014/01/31 职场文书
美术教师岗位职责
2014/03/18 职场文书
社区道德讲堂实施方案
2014/03/21 职场文书
反邪教标语
2014/06/23 职场文书
优秀党员申报材料
2014/12/18 职场文书
Golang 对es的操作实例
2022/04/20 Golang