参考自/questions/21566610/crop-out-partial-image-using-numpy-or-scipy
判断某点是否处于某个多边形内或边界上在matlab中可以方便地用inpolygon函数达到,python的某些模块中有类似的功能。
import numpy as np
from matplotlib.path import Path
xc = np.array([219.5,284.8,340.8,363.5,342.2,308.8,236.8,214.2])
yc = np.array([284.8,220.8,203.5,252.8,328.8,386.2,382.2,328.8])
xycrop=np.vstack((xc,yc)).T #这里的vstack就是垂直叠加组合形成一个新的数组,T是转置
rnd=np.random.randn(50)*50.0+250.0
rnd=rnd.reshape(25,2)
pth=Path(xycrop,closed=False)
mask=pth.contains_points(rnd) # mask里包含了对应点是否包含在多边形中的逻辑数值
可以用rnd[mask,:]获得包含在多边形内的点,用rnd[~mask,:]获得在外面的点。
Post Views: 483