Мне нужно создать изображение в виде двумерного массива.Значения пикселей изображения будут 0 для фона и 1 внутри некоторых полигонов, которые я хочу нарисовать.Я работаю с большими изображениями, поэтому важно избегать ненужных копий данных.
Я начал работать с изображением PIL, чтобы воспользоваться модулем PIL.ImageDraw
.
Вот пример:
shape = (768, 1024) # YX (rows, cols) convention
triangle = [(10, 10), (1014, 10), (512, 758)] # XY convention
imgMask = Image.new('L', (shape[1], shape[0]), 0) # XY
ImageDraw.Draw(imgMask).polygon(triangle, outline=1, fill=1)
mask = numpy.array(imgMask, copy=False)
К сожалению, последняя строка всегда приводит к копированию данных.Я подозреваю, что интерфейс массива PIL всегда возвращает копию своего буфера данных.
Есть ли способ иметь прямой доступ к буферу данных PIL Image?