blob = cv2.dnn.blobFromImage(cv2.resize(img, (224, 224)), 1.0, (104.0, 177.0, 123.0)) cv2.error: OpenCV(4.2.0) ..\modules\imgproc\src\resize.cpp:4045: error: (-215:Assertion failed) !ssize.empty() in function 'cv::resize'
时间: 2023-10-10 10:07:44 浏览: 76
这个错误是因为在调用cv2.resize()函数时,输入的img图片大小为0,导致无法进行resize操作。请检查一下代码中是否正确加载了图片,并且确保图片大小不为0。同时,可以尝试使用assert语句来检查图片大小是否为空,例如:
```
assert img.shape[0] != 0, "Error: image size is empty"
assert img.shape[1] != 0, "Error: image size is empty"
```
这样可以在遇到问题时及时报错并中断程序的执行,方便找出问题所在。
相关问题
怎么解决 blob = cv2.dnn.blobFromImage(cv2.resize(img, (224, 224)), 1.0, (104.0, 177.0, 123.0)) cv2.error: OpenCV(4.2.0) ..\modules\imgproc\src\resize.cpp:4045: error: (-215:Assertion failed) !ssize.empty() in function 'cv::resize'
这个错误提示表明在调用cv2.resize函数时,输入的图像大小为空。这通常是由于输入的图像路径错误或文件名错误引起的。请确保您输入的图像路径是正确的,并且可以找到该文件,或者您可以使用完整的图像路径来确保正确性。同时,还要确保您的图像格式能够被cv2库所支持,例如jpg和png格式。如果这些方法都不起作用,请检查您的OpenCV库是否安装正确,或者尝试更新到最新版本。
对于多个图像组成的数据集使用OpenCV中的cv2.dnn.blobFromImages()进行分类模型的预处理,数据集在附件文件夹名为images1中。分类模型、配置文件、类标签集文件在附件中。调用分类模型和配置文件使用函数名为cv2.dnn.readNetFromCaffe()。A.导入必要的包 B.使用open打开类标签集文件 C.使用cv2.dnn.readNetFromCaffe()函数装载分类模型和配置文件 D.使用paths获取输入图像路径 E.使用cv2.imread()函数读图像路径中的每个图像 F.使用cv2.resize()函数调整图像集中的每个图像的大小 G.把图像集中的每个图像放到一个图像集列表中 H.使用cv2.dnn.blobFromImages()函数预处理图像集 I.把cv2.dnn.blobFromImages()的返回结果导入分类模型中并把预测结果降 序排列 J.画最高预测概率的类标签到图像的左上角,并且显示图像分类名称和概率值
A. 导入必要的包:cv2, numpy, argparse
```
import cv2
import numpy as np
import argparse
```
B. 使用 open 打开类标签集文件
```
with open('labels.txt') as f:
labels = f.read().strip().split('\n')
```
C. 使用 cv2.dnn.readNetFromCaffe() 函数装载分类模型和配置文件
```
model = cv2.dnn.readNetFromCaffe('deploy.prototxt', 'model.caffemodel')
```
D. 使用 paths 获取输入图像路径
```
image_paths = sorted(list(paths.list_images('images1')))
```
E. 使用 cv2.imread() 函数读图像路径中的每个图像
```
images = []
for image_path in image_paths:
image = cv2.imread(image_path)
images.append(image)
```
F. 使用 cv2.resize() 函数调整图像集中的每个图像的大小
```
resized_images = []
for image in images:
resized_image = cv2.resize(image, (227, 227))
resized_images.append(resized_image)
```
G. 把图像集中的每个图像放到一个图像集列表中
```
image_list = np.array(resized_images)
```
H. 使用 cv2.dnn.blobFromImages() 函数预处理图像集
```
blob = cv2.dnn.blobFromImages(image_list, 1.0, (227, 227), (104, 117, 123))
```
I. 把 cv2.dnn.blobFromImages() 的返回结果导入分类模型中并把预测结果降序排列
```
model.setInput(blob)
outputs = model.forward()
predictions = outputs[0]
sorted_predictions = np.argsort(predictions)[::-1]
```
J. 画最高预测概率的类标签到图像的左上角,并且显示图像分类名称和概率值
```
for i in range(len(images)):
image = images[i]
prediction = predictions[i]
label = labels[sorted_predictions[i]]
confidence = prediction[sorted_predictions[i]]
text = f'{label}: {confidence:.2f}'
cv2.putText(image, text, (10, 30), cv2.FONT_HERSHEY_SIMPLEX, 1, (0, 0, 255), 2)
cv2.imshow('Image', image)
cv2.waitKey(0)
```