我试图找到鱼后面的green rectangle的中心点,但我的方法行不通。这是我的代码:#Finding contours (almost always finds those 2 retangles + some noise):
_, conts, hierarchy = cv2.findContours(img_green, cv2.RETR_TREE , cv2.CHAIN_APPROX_SIMPLE)
for cnt in conts:
area = cv2.contourArea(cnt)
#filter noise
if area > 25:
M = cv2.moments(cnt)
x1, y1, w, h = cv2.boundingRect(cnt)
x2 = x1 + w # (x1, y1) = top-left vertex
y2 = y1 + h # (x2, y2) = bottom-right vertex
cy = int(M['m01']/M['m00']) # (cx, cy) = rect center
cx = int(M['m10']/M['m00'])
rect = cv2.rectangle(green_bar_win, (x1, y1), (x2, y2), (255,0,0), 2)
center = cv2.circle(green_bar_win, (cx, cy), 2, (0,0,255), 4)
如你所见,它找到了矩形的轮廓,但在鱼所在的地方被分割,形成了两个不同的形状。它也找到这两个形状的中心(蓝色的点),但是我不知道如何找到大的中间。我想平均所有找到的矩形中心,但我不知道怎么写出来。我正在用hsv颜色找到矩形。帮忙吗?在
编辑:我从顶部的矩形中得到了'y1',但是不知道在for循环中如何从底部得到y2。我试过了:
^{pr2}$
但它仍然失败,因为y2是在赋值之前使用的。那么,在y1被for循环覆盖之前,我如何从第二个循环行程中得到y2呢?在