【发布时间】:2016-07-26 18:09:03
【问题描述】:
我正在用 [n_images, width, height, 3] 创建一个大的 numpy 数组。 为此,我创建一个空列表并附加通过裁剪 RGB 图像创建的 numpy 数组并将它们转换为 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))
我得到了一个巨大的差异:
- 第一个操作大约 80 毫秒
- 第二个大约 8 毫秒
这是为什么呢?将 PIL 转换为 numpy 数组时是否隐式执行此 convert_to_rgb ?如果检查,两个 PIL 对象都具有 RGB 模式,所以这很奇怪。有没有办法加速这个过程?我应该怎么做才能优化这个过程?不使用 PIL 吗?之后将它们转换为数组?
【问题讨论】:
-
你可能想看看 scikit-image
标签: numpy optimization python-imaging-library