PIL Изображение в массиве без копий - PullRequest
1 голос
/ 31 мая 2019

Мне нужно создать изображение в виде двумерного массива.Значения пикселей изображения будут 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?

...