我有以下最小代码从图像中获取字节:
import Image
im = Image.open("kitten.png")
im_data = [pix for pixdata in im.getdata() for pix in pixdata]
这个速度相当慢(我要处理几千兆字节的图像)所以如何才能加快速度呢?我也不熟悉该代码究竟要做什么。我所有的数据都是1280 x 960 x 8位RGB,所以我可以忽略角落等情况。
(仅供参考,完整代码为here - 我已使用上述ImageFile
替换Image.open()
循环。)
答案 0 :(得分:2)
你可以尝试
scipy.ndimage.imread()
答案 1 :(得分:0)
如果你的意思是通过algorythamically加速我可以建议你同时访问多个线程的文件(只有你没有处理序列之间的连接)
逻辑上按几个部分划分文件并同时使用线程访问每个部分(您必须将操作放在一个函数中并使用线程调用它)
这是一个关于python中线程的教程的链接
答案 2 :(得分:0)
我解决了我的问题,我想:
>>> [pix for pixdata in im.getdata() for pix in pixdata] ==
numpy.ndarray.tolist(numpy.ndarray.flatten(numpy.asarray(im)))
True
这会将运行时间缩短一半,并且有一点bash
魔法,我可以并行运行56个目录上的转换。