0

下图是 ,dark area0,bright area255. 我想从这张图片 中找到4坐标。这将是。[(x1, y1),(x2, y2),(x3, y3),(x4, y4)]bright areabright areapolygon shape (pentagon, hexagon, triangle etc.)

我尝试过cv2.findContours()类似以下代码的功能:

# Find contour(s)
cnts, _ = cv2.findContours(bin_img, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_NONE)    
print(cnts)

我也尝试过np.where()类似以下代码的功能:

idx_points = np.where(bin_img == 255)
print(idx_points)

我找不到像[(x1, y1),(x2, y2),(x3, y3),(x4, y4),(x5,y5), ...]. 我该怎么做才能达到预期的效果?

在此处输入图像描述

4

1 回答 1

1

根据他们的教程https://docs.opencv.org/3.4/d4/d73/tutorial_py_contours_begin.html,这正是cv2.CHAIN_APPROX_SIMPLE对您有用的:

左侧部分图像显示cv2.CHAIN_APPROX_NONE,保留所有轮廓点,无需尝试任何操作。右侧部分显示cv2.CHAIN_APPROX_SIMPLE仅尝试识别和存储角点。(图片来自同一教程页面)

于 2021-06-16T09:23:28.650 回答