我正在用[n_images,width,height,3]创建一个大的numpy数组。 为此,我创建一个空列表并附加从剪切RGB图像创建的numpy数组,并将它们转换为numpy数组。将PIL对象转换为numpy时发生了什么?
我碰到真的很奇怪的东西试图优化我的代码:
import time
from PIL import Image
im1=Image.open("random_png_image.png")
im2=Image.open("random_png_image.png").convert('RGB')
t1=time.time()
a1=np.asarray(im1)
t2=time.time()
a2=np.asarray(im2)
t3=time.time()
print("Converting to numpy without converting to RGB mode first took: %0,3f ms"%((t2-t1)*1000.0))
print("Converting to numpy after the image was converted to RGB first took: %0,3f ms"%((t3-t2)*1000.0))
我也得到一个HUUUGE区别:
- 周围80毫秒为先运
- 周围的8ms第二
这是为什么? PIL在将它转换为numpy数组时将隐式地执行convert_to_rgb操作?如果检测到两个PIL对象都有RGB模式,所以它很奇怪。有没有办法加速这个过程?我应该怎么做来优化这个过程?不使用PIL?之后将它们转换为数组?
您可能想看看scikit-image – MaxNoe
谢谢!会做 ! – jean