头一次遇到 OpenCV 无法读取图像,并且没有任何提示,首先怀疑的就是中文路径,因为大概率是这个地方出错的,但是修改完依旧是None,这就很苦恼了,分析了下出现None的原因,大概有以下三种情况,供大家参考
1、原因一:中文路径
OpenCV读取图片时,出现中文路径而导致的无法读取,大概率会有错误输出的,如果没有错误输出,大概率也是可以进行图片读取的,因此可以先尝试修改中文路径,可以参考「解析」opencv读取中文路径报错;
如果修改过路径后,依旧出现None的情况,并且不提示任何错误的情况下,很有可能是 原因2/3 造成上,可以尝试以下方法验证
2、原因二:权限受限
Ubuntu系统下,可能是权限问题,无法获取权限,导致无法读取
ubuntu下对文件的的权限查看:ls “文件名” -l
文件权限:
r:读
w:写
x:可执行
3、原因三:格式问题
图片格式问题,可以通过 identify 命令进行检验。图片的命名后缀与其真正格式不一致时也是None,并且不提示错误。这是因为OpenCV严格按照格式读取,而命名后缀与其真正格式不一致时,是无法读取进来的,并且不会有任务错误提示! 很难发现这个错误
Ubuntu 系统下 identify 命令不是直接 identify,而是依赖 imagemagick,不过可以通过 identify xxx/xxx.jpg
命令查看 identify 需要安装
安装完 identify 之后,便可以通过其进行检验,从下图中可以看出 虽然图像的后缀是 .jpg 但是其真正的存储格式 是 GIF,因此OpenCV肯定无法读取!