我有一个像this这样的多边形,我想得到这个多边形边界的xy坐标。
因此,我尝试了OpenCV的Canny Edge Detection并提取了这样的坐标:
>>> edge = cv2.Canny(region, 100, 200)
>>> ans = []
>>> for y in range(0, edge.shape[0]):
>>> for x in range(0, edge.shape[1]):
if edge[y, x] != 0:
ans = ans + [[x, y]]
>>> print ans
问题是,我想按顺序提取坐标,就像它们在this picture可能解释的边界中排列一样。
由于我的多边形很复杂,凸包不起作用,并且由于我得到cv2.edge()的边缘点的数量,我需要使用快速算法。
答案 0 :(得分:0)
我不确定是否要进行变量分配(y分配给x轴,反之亦然),但是在这里我用来获取某些坐标:
import cv2
import numpy as np
img = cv2.imread('1.JPG')
edges = cv2.Canny(img,100,200)
ans = []
highestY = 0
highestX = 0
highestCoordinate = [0, 0]
for x in range(0, edges.shape[0]):
for y in range(0, edges.shape[1]):
if edges[x, y] != 0:
ans = ans + [[x, y]]
if highestX < x:
highestX = x
if highestY < y:
highestY = y
highestCoordinate = [x, y]
print(f"Highest y is {highestY}")
print(f"Highest x is {highestX}")
print(f"Highest coordinate is {highestCoordinate}")