jam*_*yce 3 python opencv image-processing object-detection computer-vision
我已经使用 haar 级联对象检测在汽车的侧视图上训练了正面和负面图像,现在当我使用级联 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()
Run Code Online (Sandbox Code Playgroud)
Piglet 的回答将帮助您设置最小/最大尺寸的阈值,但如果您想找到图像中最大的边界框,您可以执行以下操作:
areas = [w*h for x,y,w,h in cars]
i_biggest = np.argmax(areas)
biggest = cars[i_biggest]
Run Code Online (Sandbox Code Playgroud)
在这里,我们正在执行以下操作:
areas具有最大值的索引,存储在i_biggestcars