python中更快的图像像素操作

时间:2017-01-19 09:44:17

标签: python opencv image-processing pixel-manipulation

我有以下嵌套循环遍历大图像(7020x5100)并设置具有相同维度的另一图像的像素值,具体取决于i的值。这个问题非常慢......请你提一下,如何加快这个算法的速度?

A=[]

for x in xrange(x_img):
    for y in xrange(y_img):
        A.append(probImage1[x][y])
        A.append(probImage2[x][y])
        A.append(probImage3[x][y])
        i = np.argmax(A)
        if i == 0:
            processedImage[x,y] = [1, 89, 255]
        if i == 1:
            processedImage[x,y] = [241, 28, 3]
        if i == 2:
            processedImage[x,y] = [137, 254, 255]
        A = [] 

1 个答案:

答案 0 :(得分:1)

在我的机器上,你的方法需要6分55秒!

尽量避免迭代图像的循环,特别是在所有内存分配的情况下。对于7020 x 5100图像,此方法需要2.14秒

newProb=np.dstack((probImage1,probImage2,probImage3))
A=np.argmax(newProb,axis=2)
processedImage[A==0]=[1,89,255]
processedImage[A==1]=[241,28,3]
processedImage[A==2]=[137,254,255]