给定 Keras 预测,如何在 OpenCV 中绘制边界框?

How do I draw a bounding box in OpenCV given a Keras prediction?

我的代码是:

model = ResNet50(weights='imagenet')

ret_val, frame = video_capture.read()
frame = cv2.resize(frame,(224,224))
cv2.imshow(windowName, frame)
frame = np.expand_dims(frame, axis=0)
frame = preprocess_input(frame)

preds = model.predict(frame)
print('Predicted:', decode_predictions(preds, top=3)[0])

我得到的结果是:

Predicted: [('n04550184', 'wardrobe', 0.40715462), ('n04209239', 'shower_curtain', 0.09730709), ('n04005630', 'prison', 0.04603362)]

我没有x, y, w, h所以我不知道在哪里绘制边界框。

有什么建议吗?

你不能使用 ResNet。 ResNet 有一个 FC 层来处理位置信息。尝试改用 YOLO。它具有非常有效的位置和对象分类功能。另一种解决方案是不使用 Keras,而是使用 OpenCV 内置的 Haar Wavelet Transforming Cascade。 This link 拥有训练 OpenCV Haar Cascade 所需的全部知识。