我已经使用haar cascade对象检测训练了汽车侧视图上的正反图像,现在当我使用cascade xml文件预测图像中的汽车时,我得到了多个矩形。在
现在
1) 为什么我的对象周围有多个矩形。
2) 如何只显示图像中检测到的最大矩形
输出图像
这是我在每个图像上得到的输出类型
编码
car_cascade = cv2.CascadeClassifier('data/cascade.xml')
img = cv2.imread('test/46.jpg')
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
cars = car_cascade.detectMultiScale(gray, 1.3, 5)
for (x,y,w,h) in cars:
img = cv2.rectangle(img,(x,y),(x+w,y+h),(0,255,0),2)
cv2.imshow('img',img)
cv2.waitKey(0)
cv2.destroyAllWindows()
小猪的答案将帮助您设置最小/最大大小的阈值,但如果您想在图像中找到最大的边界框,可以执行以下操作:
在这里,我们要做的是:
areas
的索引,存储在i_biggest
cars
中提取最大(最大面积)矩形正如函数名alread建议的
cv2.CascadeClassifier.detectMultiScale
,documentation表示:另请参阅文档:
因此,要么按大小过滤结果矩形的列表,要么通过设置minSize参数来阻止小对象。在
相关问题 更多 >
编程相关推荐