如何为 opencv-python 制作自定义 'any object' Cascade (.xml)?

How to make custom 'any object' Cascade (.xml) for opencv-python?

我想制作一个 haar 级联,以便我可以用它来检测 opencv 中的对象-python.For 例如,我想检测手表。我尝试使用 cascade trainer gui 制作级联,但它没有给我预期的结果。

所以问题是 Haar Cascade 不是检测器,甚至不是分类器。它是一个特征提取器,如果您要使用 Haar Cascade,您将结合 SVM(支持向量机)使用它进行分类,然后实现滑动 window 来检测手表。 所以这些步骤是休闲的。 1 使用滑动 window.
提取图像补丁 2 将其传递给在 Haar Cascade
上训练的 SVM 3 如果预测为真,绘制矩形

我推荐这个教程系列https://pythonprogramming.net/haar-cascade-object-detection-python-opencv-tutorial/.please如果您仍然需要帮助,请联系我。

嗯,训练前先上网搜一下。也许你要检测的物体已经训练过了,所以你不需要再训练了。

比如你想检测手表。 haar-file 可用 here

所以不管能不能用我都用了这个文件,结果是:

代码:

import cv2

w_cascade = cv2.CascadeClassifier('watchcascade10stage.xml')

cap = cv2.VideoCapture(0)

while True:
    ret, img = cap.read()
    if ret:
        gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
        w = w_cascade.detectMultiScale(image=gray,
                                       scaleFactor=1.3                                        
                                       minNeighbors=50)

        for (x, y, w, h) in watches:
            cv2.rectangle(img, (x, y), (x + w, y + h), (255, 255, 0), 2)
            font = cv2.FONT_HERSHEY_SIMPLEX
            cv2.putText(img, 'Watch', (x - w, y - h), font, 0.5, (11, 255, 255),  2, cv2.LINE_AA)

        cv2.imshow('img', img)
        k = cv2.waitKey(0) & 0xff
        if k == 27:
             break

cap.release()
cv2.destroyAllWindows()

您可以通过互联网搜索找到其他教程。例如以 this video

开头