2015-10-06 4 views
1

В основном у меня есть эти изображения tif, которые мне нужно перезаписать и прочитать данные пикселя, чтобы определить, есть ли пиксель на изображении из тающего льда или нет. Это определяется пороговым значением, установленным в скрипте. Это настроено так, чтобы отображать как общую стоимость расплава, так и каждый месяц. Он отлично работает на моей машине, но мне нужно запустить его удаленно на виртуальной машине Linux. Он работает, но он производит общее количество, которое точно равно 71146 больше, чем оно должно быть и что оно производило.Почему этот код производит другое значение в виртуальной машине?

Это фрагмент, который выполняет большую часть обработки и в конечном итоге вызывает мои проблемы, я считаю.

for file in os.listdir(current): 
    if os.path.exists(file): 
     if file.endswith(".tif"): 
      fname = os.path.splitext(file)[0] 
      day = fname[4:7] 
      im = Image.open(file) 
      for x in range(0,60): 
       for y in range(0,109): 
        p = round(im.getpixel((x,y)), 4) 
        if p >= threshold: 
         combined = str(x) + "-" + str(y) 
         if combined not in coords: 
          melt += 1 
          coords.append(combined) 
      totalmelt.append(melt) 

А потом totalmelt суммируется, чтобы получить годовую стоимость:

total = sum(totalmelt) 

Пороговое значение которое было установлено ранее следующим образом:

threshold = float(-0.0158) 

Я чувствую, что я что-то не хватает очевидно. Прошло некоторое время с тех пор, как я играл с Python ... Я сейчас перехожу с C++. Спасибо за любые решения, которые вы можете предложить!

+0

Factor вне функции, чтобы получить расплав для одного изображения. Это должно сделать очевидным, в чем проблема. Локальность данных делает код более понятным. –

ответ

1

Вам нужно сбросить melt к 0 перед вашими внутренними петлями:

melt = 0 
for x in range(0,60): 
    for y in range(0,109): 
     ... 
     melt += 1 
totalmelt.append(melt) 
Смежные вопросы