2013-10-03 5 views
0

Я пытаюсь программировать небольшой плагин для ImageJ/Fiji с Jython. Поэтому я должен перебирать пиксельный столбец. К сожалению, командаИтерация через пиксельный столбец

pixels = ip.getPixels() 

результат в массиве, отсортированном по пиксельным строкам. Поэтому я написал что-то, чтобы получить сумму значений пикселей в столбце (которые заполняют небольшой запрос).

x = imp.getWidth() 
y = imp.getHeight() - 1 
pixels = ip.getPixels() 
j = 0 

for j in range(x): 
    print(j) 
    i = j 
    tempx = x - j 
    su = 0 
    for i in range((x * y) - 1): 

     if pixels[i] > 0: 
     su = su + 1 
     else: 
     su = su + 0 
     i = i + tempx -1 

    print(su) 

Но, похоже, просто получить сумму всех пикселей изображения (заполнение запроса). На мой взгляд, есть проблема со вторым циклом, но я слишком много начинаю, чтобы понять, почему. Заранее спасибо.

+0

Этой проблемы может ответить здесь: HTTP://stackoverflow.com/questions/13567345/how-to-calculate-the-sum-of-all-columns-of-a-2d-numpy-array-efficiently – Jimmy2Shoes

ответ

0

Я согласен, что проблема, вероятно, связана со вторым циклом.

for i in range((x * y) - 1): 

, который будет работать от 0 до (почти) количества пикселов в изображении (ширина * высота-1). Я думаю, что петля вы хотите

for i in range(y): 
    if pixels[i+j*(y+1)] > 0: 

Это хорошая практика, но я уверен, что есть гораздо более вещий способ сделать то, что вы хотите

Смежные вопросы