我正在使用two intersecting pentagons的jpeg。我已经使用PIL将图像转换为像素数据,但是我在分割多边形的每个线段时遇到了问题。我想在每个线段上放置一条最佳拟合线,以处理角度和线段以比较其他数据。我目前正在设置左/右/低/高限以捕获每个段。它工作,但不捕获每个像素。必须有更好的方法来分离片段或分析多边形。任何帮助或指示都表示赞赏。
img = Image.open(path)
data = img.getdata()
height, width = img.size
pixelList = []
pix = img.load()
for x in range(height):
for y in range(width):
pixelList.append((x, y, pix[x,y]))
black_coords = []
x_coords = []
y_coords = []
for i in pixelList:
if i[2][0] < 50:
black_coords.append((i[0],i[1]))
x_coords.append(i[0])
y_coords.append(i[1])
plt.scatter(x_coords,y_coords)
def segment_bound(left_bound, right_bound, low_bound, high_bound):
segX = []
segY = []
for i in black_coords:
if i[0] > left_bound and i[0] < right_bound and i[1] > low_bound and
i[1] < high_bound:
segX.append(i[0])
segY.append(i[1])
return segX, segY
这是每个细分的代码,它很繁琐但有效
seg1X, seg1Y = segment_bound(147.4, 285.7, 305, 345)
startline = min(seg1X)
endline = max(seg1X)
p_coeff = np.polyfit(seg1X, seg1Y, 1)
p = np.poly1d( p_coeff )
x = np.linspace( startline, endline)
seg1m, seg1b = list(p)