#python #numpy #rasterio
#python #numpy #rasterio
Вопрос:
У меня есть двоичное растровое изображение, как показано ниже:
import rasterio
import numpy as np
path = r'D:LE07_L1TP_147048_20070221_20170105_01_T1LE07_L1TP_147048_20070221_20170105_01_T1_B1.tif'
with rasterio.open(path) as dataset:
image = dataset.read(1)
mask = np.where(image > 1, 255, 0)
white_pixels = np.array(np.where(mask == 255))
pixel_1 = white_pixels[:,0]
pixel_4 = white_pixels[:,-1]
Запустив приведенный выше код, я могу получить местоположения «pixel_1» и «pixel_4». Может ли кто-нибудь помочь мне в получении расположения пикселей «pixel_2» и «pixel_3».
Ответ №1:
Найдите x, а затем y.
white_pixels_x = np.nonzero(np.sum(mask, axis=0))
p3x = white_pixel_x[0][0]
p2x = white_pixel_x[0][-1]
p3y = np.nonzero(mask[:, p3x])[0][0]
p2y = np.nonzero(mask[:, p2x])[0][0]
Комментарии:
1. Ваше решение сработало для меня с некоторыми изменениями в вашем предлагаемом решении — «p3x amp; p2x изначально были представлены в вашем предлагаемом решении в виде одномерного массива. Итак, я просто извлек нужные значения «.
2. @RRSCNGP Я пересмотрел ответ. Посмотрите, правильно ли я вас понимаю
3. ….Да, ваш пересмотренный ответ правильный. Спасибо за помощь.