Как получить расположение пикселей из 4 угловых белых пикселей в двоичном изображении

#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. ….Да, ваш пересмотренный ответ правильный. Спасибо за помощь.