Я пытаюсь вычесть два изображения .tif.Для этого я использую следующий код:
import numpy as np
import os
from osgeo import gdal,ogr
import copy
from PIL import Image
import time
def loadTifAsArray(image, filepath):
print("Loading "+image)
path = os.path.join(filepath,image)
tif = gdal.Open(path)
tifArray = tif.ReadAsArray()
return tifArray
def subtract(image1, image2):
# Copy of one of the images is used for saving calculated values
print("Subtracting ...")
sub = copy.deepcopy(image1)
rows = len(sub)
cols = len(sub[0])
for px in range(cols):
for py in range(rows):
sub[px][py] = image1[px][py] - image2[px][py]
return sub
start_time = time.time()
cwd = os.getcwd()
filepath = os.path.join(cwd,'tifs')
arr = os.listdir(filepath)
tifList = []
for image in arr:
tifList.append(loadTifAsArray(image, filepath))
print("--- %s seconds for loading the images ---" % (time.time() - start_time))
sub = subtract(tifList[0], tifList[1])
print("--- %s seconds for loading and subtracting ---" % (time.time() - start_time))
Я вычитаю изображения, загруженные как растровые данные, и просто делаю глубокую копию одного из изображений, чтобы сохранить рассчитанные значения.
Проблема в расчетной стоимости.Когда я смотрю на значения обоих изображений по индексу [0] [0], я получаю следующие значения:
print(image1[0][0])
print(image2[0][0])
505
549
Когда я пытаюсьчтобы вычесть их, я получаю это:
print(image1[0][0] - image2[0][0])
65492
Я не понимаю, почему это так, и буду признателен за любую помощь!