如何为 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
开头
我想制作一个 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
开头