@ Anil'ın yanıtına biraz daha doğrudan bir alternatif olarak, matplotlib hızlı bir şekilde rasgele bir çokgeni rasterleştirmek için kullanılabilen matplotlib.nxutils.points_inside_poly
'a sahiptir. Örneğin. verir
import numpy as np
from matplotlib.nxutils import points_inside_poly
nx, ny = 10, 10
poly_verts = [(1,1), (5,1), (5,9),(3,2),(1,1)]
# Create vertex coordinates for each grid cell...
# (<0,0> is at the top left of the grid in this system)
x, y = np.meshgrid(np.arange(nx), np.arange(ny))
x, y = x.flatten(), y.flatten()
points = np.vstack((x,y)).T
grid = points_inside_poly(points, poly_verts)
grid = grid.reshape((ny,nx))
print grid
(bir boolean numpy dizisi):
[[False False False False False False False False False False]
[False True True True True False False False False False]
[False False False True True False False False False False]
[False False False False True False False False False False]
[False False False False True False False False False False]
[False False False False True False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]]
Oldukça güzel scipy.ndimage.morphology özelliklerden herhangi bir grid
geçmesi gerekir.
float tipindeysem ne yapmalıyım? 'L' değil, '1' görüntü modunu kullanıyorum çünkü Numpy-1.5.0/PIL-1.1.7 'numpy.array öğesini desteklemiyor (img) 'bivalue görüntüler için güzel bir dönüşüm. Dizinin üst kısmı, beklenen maske boyutunun 1/8'inde 8 küçük alt görüntü içerir ve dizinin kalan 7/8'i çöple doldurulur. Belki de dönüşüm ikili verileri düzgün bir şekilde açmaz mı? –
Bu yöntemin yalnızca tamsayı koordinatlarıyla birlikte çalıştığını düşünüyorum (ör. Izgara koordinatları). Köşe koordinatları yüzerse, diğer çözüm hala çalışır. –
from: @jmetz "Just FYI: Basit bir zamanlama testi yaptım ve PIL yaklaşımı matplotlib versiyonundan ~ 70 kat daha hızlı!" – Jakobovski