我使用这段代码来查找一些blob,并选择最大的一个。
contours, hierarchy = cv2.findContours(th1, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_NONE)
if len(contours) != 0:
c = max(contours, key=cv2.contourArea)
现在,我需要修改这段代码,使其返回帧中间的轮廓(其边界框覆盖图像的中心像素)。
我不知道如何做这件事,除了获得所有轮廓的边界框
xbox, ybox, wbox, hbox = cv2.boundingRect(cont)
然后检查x和y是否小于中心e,x+w和y+h是否大于中心e。这看起来不像是一个有效的方法坚韧因为可能有多达500个小控件。
2条答案
按热度按时间7uzetpgm1#
OpenCV中有一个函数,它将检查给定的点是在轮廓内部(返回1)、边界上(返回0)还是外部(返回-1)。
cv2.point多边形测试()
qmelpv7a2#
我想推荐这种方法,也许有一种更直接的方法。我在这里写代码,但给出了一个可能的算法:
应该可以