如何从二进制图像中找到多边形形状的坐标?
How to find coordinate of polygon shape from binary image?
下图,dark area
是0
,bright area
是255
。我想从此图像中找到 bright area
的 4
坐标 [(x1, y1),(x2, y2),(x3, y3),(x4, y4)]
。这 bright area
将是 polygon 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), ...]
这样的预期结果。我该怎么做才能达到预期效果?
根据他们的教程,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
仅尝试识别和存储角点。 (图片来自同一教程页面)
下图,dark area
是0
,bright area
是255
。我想从此图像中找到 bright area
的 4
坐标 [(x1, y1),(x2, y2),(x3, y3),(x4, y4)]
。这 bright area
将是 polygon 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), ...]
这样的预期结果。我该怎么做才能达到预期效果?
根据他们的教程,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
仅尝试识别和存储角点。 (图片来自同一教程页面)