openCV踩坑记1--读取图像数据失败cv2.imread(image_dir)

转自知乎

用OpenCV读取图像数据

img_bgr = cv2.imread(image_dir)

失败的原因:
1、路径中不能有中文

2、图像的名字不能有中文

3、绝对路径调用方式,要双反斜杠

image_dir='D:\\Documents\\GitHub\\my_OpenCV\\note_Machine Learning for OpenCV\\data\\longmao.jpg'
img_bgr = cv2.imread(image_dir)

4、绝对路径调用方式,要加‘r’

image_dir=r'D:\Documents\GitHub\my_OpenCV\note_Machine Learning for OpenCV\data\longmao.jpg'
img_bgr = cv2.imread(image_dir)

5、(6月7号)亲试有些参考书的调用方式,发现不行,比如:

image_dir='data/longmao.jpg'

(6月8号)又可以了,不知道为什么?(中间晚上的时候电脑重启了)

读取失败时的报错:
print(img_bgr) 的结果是none
在这里插入图片描述

plt.imshow(img_bgr)的结果报错并显示空白图

TypeError: Image data cannot be converted to float

在这里插入图片描述

下面是我调通的正确代码

import cv2
import matplotlib.pyplot as plt
%matplotlib inline
image_dir='D:\\Documents\\GitHub\my_OpenCV\\note_Machine Learning for OpenCV\\data\\longmao.jpg'
img_bgr = cv2.imread(image_dir)
print(img_bgr)
plt.imshow(img_bgr)

在这里插入图片描述
运行环境为:OpenCV 3.4.1 、python 3.5.2 、Windows 7

IDE:jupyter lab

请酌情参考!

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
这段代码是一个文件操作的代码块,首先打开了一个文件,并将文件对象赋值给变量`f`。打开的文件是根据给定的路径拼接而成的,路径由`data_root`、`split_dir`和'trainval.txt'组成。 接下来,定义了一个变量`length`,它表示`gray_filename_list`列表的长度,即灰度图像文件名列表的长度。 然后,通过`for`循环遍历`gray_filename_list`列表的前`length`个元素。对于每个元素,首先根据文件名拼接出标签图像和灰度图像的路径,分别赋值给变量`labelpath`和`graypath`。 然后,调用函数`get_Image_dim_len(labelpath, graypath)`,对标签图像和灰度图像进行尺寸校验。 接下来,使用OpenCV的`cv.imread()`函数读取标签图像,并指定参数`cv.IMREAD_GRAYSCALE`表示以灰度图像方式读取。将读取后的图像赋值给变量`img`。 然后,通过计算黑色像素点(像素值为0)和非黑色像素点(像素值不为0)的数量,更新变量`black_num`和`red_num`。其中,`black_num`表示黑色像素点的数量,而`red_num`表示非黑色像素点的数量。 最后,使用文件对象`f`调用`writelines()`方法,将每个处理过的文件名写入文件中,每个文件名占据一行。 总结来说,这段代码的作用是对灰度图像文件名列表中的每个文件名进行处理,包括进行尺寸校验、读取图像、统计像素点数量,并将处理后的文件名写入到指定的文件中。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值