怎么解决 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 08:07:44 浏览: 195
这个错误提示表明在调用cv2.resize函数时,输入的图像大小为空。这通常是由于输入的图像路径错误或文件名错误引起的。请确保您输入的图像路径是正确的,并且可以找到该文件,或者您可以使用完整的图像路径来确保正确性。同时,还要确保您的图像格式能够被cv2库所支持,例如jpg和png格式。如果这些方法都不起作用,请检查您的OpenCV库是否安装正确,或者尝试更新到最新版本。
相关问题
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()函数时,输入的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"
```
这样可以在遇到问题时及时报错并中断程序的执行,方便找出问题所在。
opencv dnn 实现人脸检测
OpenCV DNN 模块可以使用深度学习模型实现人脸检测。以下是一个简单的 Python 示例代码:
```python
import cv2
# 加载模型和配置文件
model = cv2.dnn.readNetFromCaffe('deploy.prototxt', 'res10_300x300_ssd_iter_140000.caffemodel')
# 读取图像
img = cv2.imread('test.jpg')
# 创建 blob
blob = cv2.dnn.blobFromImage(cv2.resize(img, (300, 300)), 1.0, (300, 300), (104.0, 177.0, 123.0))
# 进行人脸检测
model.setInput(blob)
detections = model.forward()
# 绘制人脸矩形框
for i in range(0, detections.shape[2]):
confidence = detections[0, 0, i, 2]
if confidence > 0.5:
box = detections[0, 0, i, 3:7] * np.array([img.shape[1], img.shape[0], img.shape[1], img.shape[0]])
(x, y, w, h) = box.astype("int")
cv2.rectangle(img, (x, y), (w, h), (0, 255, 0), 2)
# 显示结果
cv2.imshow('img', img)
cv2.waitKey()
cv2.destroyAllWindows()
```
在示例代码中,我们首先加载了深度学习模型和配置文件。然后读取了一张测试图像,并创建了一个 blob。使用 `setInput()` 函数将 blob 输入到模型中进行人脸检测。最后,用矩形框标记检测到的人脸,显示结果图像。
需要注意的是,这里使用的是基于 Single Shot Detector (SSD) 的人脸检测器,可以检测出多个人脸。如果需要检测出单个人脸,可以根据置信度选取最大的人脸框。
阅读全文