Я новичок в Python и хочу использовать цикл for для анализа вертикальных фрагментов изображения.Мой цикл for работает, когда каждая из отдельных строк выполняется независимо.Однако при совместном выполнении объект, созданный в первой строке, принимает значения объекта, созданного во второй строке.
# create image of random noise
im = np.random.randint(0,255,(100,200))
# create empty y and dy objects with same size as original image
empty = np.zeros([im.shape[0],im.shape[1]])
y = empty
dy = empty
# get pixel intensities in vertical strips, and then take first derivative
for i in xrange(im.shape[1]):
y[:,i] = im[:,i].astype(np.int32)
dy[:,i] = np.insert(diff(y[:,i]),0,0)
Я ожидал получить объект y
, идентичный моему изображениюim
и объект dy
, который имеет те же размеры, что и im
и y
, но содержит значения, представляющие первую производную интенсивности пикселей вдоль вертикального направления изображения.
Вместо этого яубедитесь, что dy
был правильно рассчитан, но y
был перезаписан значениями, идентичными dy
.Почему объект y
перезаписывается?
Для пояснения: мое исходное изображение имеет тип "uint8", который нельзя дифференцировать.Я должен преобразовать в "int32", чтобы вычислить производную.В случае np.random.randint()
пример изображения уже находится в int32
.Таким образом, создание объекта y
не является необходимым в представленном примере, но мне нужно, чтобы оно взяло производную от срезов моего изображения.