Python图像像素访问非常慢

时间:2018-04-18 13:30:19

标签: python image-processing

我正在使用不同的变换编码,例如DWT,DCT和DFT。我一直在质疑我在执行时所使用的数据结构的方法。下面是一个例子,比如我想分析图像中的每个像素,也许是为了执行某种编码。我在这里所做的就是在同一个变量“a”上加载每个像素来演示一个非常通用的例子。这段代码片段需要大约66毫秒,这对我来说非常慢。在个人读取和写入像素时,是否有更好的图像处理方法?

class Example():

   def __init__(self):
       self.load_image("lena_312.png") #312 by 312

    def load_image(self, directory):
       self.img = cv2.imread(directory)
       self.height,self.width,self.channel = self.img.shape
       self.img_org = np.matrix(self.img[:,:,0]) #Image is greyscale

    def test(self):
       for j in range(0,self.height):
           for i in range(0,self.width):
                a = self.img_org[j,i]

if __name__ == "__main__":
    EX = Example()
    start = time.time()
    EX.test()
    print time.time()-start

1 个答案:

答案 0 :(得分:0)

纯Python每像素访问预计会非常慢。 Python列表和Python整数对于通常依赖CPU缓存和流水线操作的数值繁重的操作来说会产生巨大的开销。

如果您必须在不受限制的Python中编写自定义算法代码,请考虑使用Pillownumpy / scipy to do massive bitmap operations,或者至少尝试使用Cython