问题描述
我想创建一个haar级联,以便可以用它来检测opencv-python中的对象。例如,我想检测一个手表。我尝试使用级联培训师gui进行级联,但没有给我预期的结果。
解决方法
因此,问题是Haar Cascade不是检测器,也不是分类器。如果要使用Haar Cascade,它将与SVM(支持向量机)结合使用,以进行分类,然后实现滑动窗口以检测手表,这是一个特征提取器。
因此,这些步骤是休闲的。
1使用滑动窗口提取图像补丁。
2将其传递给经过Haar Cascade培训的SVM
3如果预测正确,则绘制矩形
如果您仍然需要帮助,我建议本系列教程https://pythonprogramming.net/haar-cascade-object-detection-python-opencv-tutorial/.please与我联系。
,在培训之前,请先通过互联网进行搜索。也许您想要检测的物体已经被训练,所以您不需要再次训练。
例如,您要检测手表。 haar文件可用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),2,cv2.LINE_AA)
cv2.imshow('img',img)
k = cv2.waitKey(0) & 0xff
if k == 27:
break
cap.release()
cv2.destroyAllWindows()
您可以找到其他通过Internet搜索的教程。例如,以this video
开头