Python 3.x 如何获取ImageDraw对象的数组?

Python 3.x 如何获取ImageDraw对象的数组?,python-3.x,python-imaging-library,Python 3.x,Python Imaging Library,我正在为图片编写一个通用算法,所以我从PIL库的Image类开始,创建了一个输入图像的numpy数组。所以现在我想画一些图形,最简单的方法是使用ImageDraw,但在下一次演变中我应该使用数组,所以我需要将ImageDraw对象转换为图像对象或numpy数组 有什么建议吗?我该怎么做 我尝试在图像对象上使用numpy转换。试图找到包含的转换方法 from PIL import Image, ImageDraw import numpy input_image = Image.open("i2

我正在为图片编写一个通用算法,所以我从PIL库的Image类开始,创建了一个输入图像的numpy数组。所以现在我想画一些图形,最简单的方法是使用ImageDraw,但在下一次演变中我应该使用数组,所以我需要将ImageDraw对象转换为图像对象或numpy数组

有什么建议吗?我该怎么做

我尝试在图像对象上使用numpy转换。试图找到包含的转换方法

from PIL import Image, ImageDraw
import numpy

input_image = Image.open("i2.jpg")
width, height = input_image.size
num_weights = width * height

image_draw = ImageDraw.Draw(Image.new('RGB', (width, height), 'WHITE'))
input_image = numpy.array(input_image.getdata())

#Do some staff with image_draw using information from input_image
#And try to convert image_draw to input_image

我想把一个numpy数组或图像对象作为输出,我想你想把一个图像处理成一个
PIL图像
,这样你就可以在上面画画,也可以把它作为一个numpy数组,这样你就可以在上面做处理了

下面是一个示例,演示如何使用PIL绘制图像,然后将其转换为Numpy数组并对其进行一些处理,然后将其转换回PIL图像

#!/usr/bin/env python3

from PIL import Image, ImageDraw

# Create a black 600x200 image
img = Image.new('RGB', (600, 200))

# Get a drawing handle
draw = ImageDraw.Draw(img)

# Draw on image
draw.rectangle(xy=[10,20,300,80], fill='red')

# Save as "result1.png"
img.save('result1.png')

# Convert PIL Image to Numpy array for processing
na = np.array(img)

# Make mask selecting red pixels then make them blue
Rmask =(na[:, :, 0:3] == [255,0,0]).all(2) 
na[Rmask] = [0,0,255]

# Convert Numpy array back to PIL Image
img = Image.fromarray(na)

# Save as "result2.png"
img.save('result2.png')
这两个图像是
“result1.png”

“result2.png”


对不起,我已经读了所有的单词,但我不知道你想做什么。为什么你认为你需要一系列的东西?我想用进化算法来画艺术。因为EA使用了数百万次迭代,所以我想使用fast numpy数组,而不是使用ImageDraws非常感谢,我理解它,但没有写一个答案=),但我不确定这个解决方案的有效性,因为它需要大量转换如果你能描述一下如何生成下一个进化,我们可以研究出如何快速完成…首先我做健身,它检查人口如何适应原始图像,现在它只是RGB的差异,然后我用最适合人口的一半来让他们成为父母。然后我在最合适的像素上画圆圈,并使其他像素混合。确切地说,这一步需要很多时间,因为对于填充中的每个图片,我首先创建一个空图像,然后在上面绘制一些图形,将此图像转换为一个数组,并将此值添加到初始填充中。对我来说,多线程和用C/C++编写会让我受益匪浅!