Более быстрое управление пикселями изображения в питоне
У меня есть следующий вложенный цикл, который проходит по большому изображению (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 ответ
На моей машине ваш метод занимает 6 минут 55 секунд!
Старайтесь избегать циклов, повторяющихся над изображением, особенно при продолжающемся распределении памяти. Этот метод занимает 2,14 секунды для изображения 7020 x 5100
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]