使用OpenCV在Jupyter读取本地图片报错dtype object无法转换为float
问题原因
两个报错的根本原因是cv.imread()未成功读取到图片,返回值为None:
cv.cvtColor报错!_src.empty()是因为输入的源数据为空,不符合处理要求- matplotlib报错
Image data of dtype object cannot be converted to float是因为传入的im为None,被识别为object类型,无法转换为绘图需要的float数值类型
解决方法
- 优先修正图片路径:你提到图片存放在桌面,当前代码用的相对路径只有在Jupyter Notebook的工作目录和图片存放目录一致时才能生效,建议替换为绝对路径:
Windows系统下桌面路径格式参考:C:/Users/你的实际用户名/Desktop/dog.jpg(也可以用双反斜杠\\替代正斜杠做路径分隔) - 增加读取校验逻辑,提前识别读取失败的情况,示例代码如下:
import cv2 as cv import matplotlib.pyplot as plt # 替换为你的实际图片绝对路径 im = cv.imread("C:/Users/xxx/Desktop/dog.jpg") if im is None: print("图片读取失败,请检查路径、文件名、图片完整性") else: im_1 = cv.cvtColor(im, cv.COLOR_BGR2RGB) plt.imshow(im_1) plt.show()
- 其他排查项:确认文件名拼写、大小写完全匹配,图片没有损坏、没有被其他进程锁定,后缀名和实际图片格式一致。
内容的提问来源于stack exchange,提问作者Sam
相关产品推荐
相关产品推荐

