1. 问题

项目需要用opencv实现图像的读取和变化,读取图像时却一直显示图像类型为NoneType,

def data_aug(img_path,path,count):print(img_path)img = cv2.imread(img_path)[:,:,::-1]  #imread返回回从指定文件加载的图像。
#出错:TypeError: 'NoneType' object is not subscriptable

明明输出路径在文件夹中能够打开,在程序中却运行不起来。这是为什么呢?

2. 解决

其实原理很简单,就是:cv2不能识别中文名的路径。
img_path中存在中文路径,因此无法成功读取。这个坑在去年暑假初学opencv的时候网课老师专门强调过,但当时并没有在意,导致现在花了很长时间寻找错误。
解决方法就是先用先用np.fromfile()读取为np.uint8格式,再使用cv2.imdecode()解码。
当然,这样太麻烦了,于是果断放弃opencv,转向PIL。
修改代码后,结果频频报错,原因是两个库虽然都是图像处理,但函数不一样呀!后面图像的变化需要调用opencv的函数,于是还是选用cv。
于是在网上找到一个自制函数的方法,可以保存下来,每次都这样使用,避免出错。

def cv_imread(file_path):cv_img = cv2.imdecode(np.fromfile(file_path, dtype=np.uint8), cv2.IMREAD_COLOR)return cv_img

结果展示:

pth=r"D:\2021年\清醒纪\学校课程\目标检测-比赛\NTS-Net\CUB_200_2011\images\002.Laysan_Albatross\Laysan_Albatross_0006_702.jpg"
import numpy as np
img_path=r"D:\2021年\清醒纪\学校课程\目标检测-比赛\避免泄露_数据集\latest_data\00.战斗机\1001.jpg"
def cv_imread(file_path):cv_img = cv2.imdecode(np.fromfile(file_path, dtype=np.uint8), cv2.IMREAD_COLOR)return cv_img
img=cv_imread(img_path)
cv2.imshow("jj",img)
cv2.waitKey()
#成功显示图片!!

3. 强调

cv.imread函数能够成功读取非中文路径的图片,不接受non-ascii的路径。所以,路径中有中文的,请增加函数。
当然,个人认为为了避免不必要的麻烦,程序员应该与英语交朋友,将所有命名统一为英语,这样在使用国外开源项目的时候会减少很多修正错误的时间(而且这种错误往往不易发现)

opencv读取图像始终显示NoneType相关推荐

  1. 第一个OpenCV读取图像并显示

    转载于:https://www.cnblogs.com/MyFlora/archive/2011/06/02/2068572.html

  2. Python,OpenCV骨架化图像并显示(skeletonize)

    Python,OpenCV骨架化图像并显示(skeletonize) 1. 效果图 2. 源码 参考: 1. 效果图 自己画一张图,原图 VS 骨架效果图如下: opencv logo原图 VS 骨架 ...

  3. php 读取图片bgr,OpenCV读取图像为BGR

    OpenCV读取图像为BGR 以下程序演示了如何将彩色图像作为BGR类型图像读取并使用JavaFX窗口显示. 在这里通过将IMREAD_COLOR标志传递给imread()方法以及保存彩色图像路径的S ...

  4. python opencv 读取图片_Python opencv 读取图像

    对于 matlab 起家做数字图像处理的人来讲都非常适应matlab对图像处理的操作和思路,尤其是它可以非常方便直观的看到图像的RGB值. 由于最近在研究深度学习的计算机视觉方面的东西,于是完全自学接 ...

  5. linux opencv打开图片路径,OpenCV读取图像_显示图像_保存图像

    读入图像﹑显示图像和保存图像是图像处理过程中最基本的,也是必不可少的操作. 配置好OpenCV 以后,包含以下两个头文件: #include "cv.h" #include &qu ...

  6. OpenCV-Python教程:读取图像、显示、写入图像(imread,imshow,imwrite,waitKey)

    原文链接:http://www.juzicode.com/archives/5395 返回Opencv-Python教程 这篇文件介绍怎么用OpenCV-Python从静态图片文件中获取图像.显示图像 ...

  7. OpenCV读取图像_显示图像和保存图像

    配置好 OpenCV 以后,包含以下两个头文件: #include "cv.h" #include "highgui.h" IplImage* image=cv ...

  8. opencv读取图像的函数

    显示一幅图: 主要是运用功能:imread namedWindow imshow imread:从字面意思我们就可以看懂,用来读取图片的: namedWindow:显然,我们也可以看到这是用来命名窗口 ...

  9. 踩坑记录 PIL与Opencv读取图像的差别

    1.读入的数据类型不同 PIL读入图像,以jepg为例,类型为PIL.JpegImagePlugin.JpegImageFile: Opencv读入图像,直接就是numpy.ndarray. 2.宽. ...

最新文章

  1. 懂点 Nginx 反向代理与负载均衡,是面试加分项没有之一
  2. An error has occurred while drawing:java.lang.IllegalStateException: The display list is not valid.
  3. 台式计算机m9870t,JBT9870_水力测功器最新标准规范(14页)-原创力文档
  4. ansible file模块_Ansible: 检测文件是否存在的逻辑
  5. java mysql防重复提交_防止数据重复提交的6种方法(超简单)!
  6. [运维-服务器 – 2A] – nginx下绑定域名
  7. linux多环境变量使用字典,字典的用处非常大,昨天在网上找了个能在linux跑的字典程序,分享一下。...
  8. python变量、运算符、要求从键盘输入用户名和密码,校验格式是否符合规则,如果不符合,打印出不符合的原因,并提示重新输入练习
  9. java8 stream ,filter 等功能代替for循环
  10. 用实体类来做数据绑定(不用数据表数据字段的绑定方法)
  11. html编辑器pp,在线轻设计工具之H5
  12. 建材行业环境保护和治理措施
  13. ORAN专题系列-19:5G O-RAN FrontHaul前传接口M Plane互操作性测试IOT规范
  14. 谁在用琵琶弹奏一曲东风破
  15. 12864LCD驱动ST7567
  16. 股票助手-您的理财好帮手
  17. 不用找,你想要的家具灯饰类的犀牛rhino模型素材都在这里!
  18. 梦幻诛仙服务器信息失败怎么解决,《梦幻诛仙》登陆出错 常用的解决方案
  19. mac多开屏幕_不折腾不舒服 篇一:2K显示器不得不说的尴尬及解决方案,聊聊MacOS开启HiDPI...
  20. 在维修计算机时如何防范静电,计算机机房防静电的重要性

热门文章

  1. 关于Wordpress 的DIVI主题怎样调节BLOG默认字体大小!
  2. java输出啊abc变量_在Java中变量ABc和变量abc是同一个变量。
  3. 计算机设备停用代码22,Win7电脑提示由于该设备有问题Windows已将其停止(代码43)怎么办?...
  4. linux zip 软件下载,7zip linux版
  5. 在matlab中转换图像为矩阵
  6. 论文被《现代计算机》录用后,《现代计算机》旬刊征稿
  7. 使用CURL检测Clinet侧发起的HTTP请求各阶段时间
  8. SweetAlert swal 是同步的还是异步的
  9. HTML5基础 | (2)HTML5文档结构与标签
  10. 信息安全系统设计基础第一次实验报告 201352012013530620135307