怎么解决 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 07:07:44 浏览: 41
这个错误提示表明在调用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"
```
这样可以在遇到问题时及时报错并中断程序的执行,方便找出问题所在。
用python写一份人脸比对代码
当然可以,人脸比对是一项非常成熟的计算机视觉任务,可以使用Python中的第三方库如OpenCV或者dlib实现。如果你需要一个简单的示例,你可以参考下面的代码:
import cv2
import numpy as np
def face_match(img1_path, img2_path):
# 加载图像并进行预处理
img1 = cv2.imread(img1_path)
img1 = cv2.cvtColor(img1, cv2.COLOR_BGR2RGB)
img1 = cv2.resize(img1, (224, 224))
img2 = cv2.imread(img2_path)
img2 = cv2.cvtColor(img2, cv2.COLOR_BGR2RGB)
img2 = cv2.resize(img2, (224, 224))
# 加载预训练模型
model = cv2.dnn.readNetFromTorch('models/openface_nn4.small2.v1.t7')
# 提取人脸特征
blob1 = cv2.dnn.blobFromImage(img1, 1.0/255, (96, 96), (0, 0, 0), swapRB=True, crop=False)
blob2 = cv2.dnn.blobFromImage(img2, 1.0/255, (96, 96), (0, 0, 0), swapRB=True, crop=False)
model.setInput(blob1)
feature1 = model.forward()
model.setInput(blob2)
feature2 = model.forward()
# 计算相似度
dist = np.linalg.norm(feature1 - feature2)
return dist
# 调用函数进行比对
distance = face_match('img1.jpg', 'img2.jpg')
print('Distance:', distance)
注:这是一个简单的示例代码,实际实现时还需要考虑一些细节问题。