Пример кода хорошо прокомментирован, что означает, что вы получили то, что на самом деле делает код. Короче,
Занимает нижнюю половину области изображения и сохраняет ее в переменной "bottom_half", затем берет сумму всех пикселей изображения по вертикали и затем возвращает свое значение в массиве.
Теперь нужно понять, какие значения возвращает функция и где она используется.
Поскольку следующей вещью, которую вы собирались сделать (в соответствии с вопросом), было найти гистограмму, и гистограмма в основном отображает частоту различных пикселей, присутствующих в изображении.
Теперь эта гистограмма принимает входные данные одного массива или последовательности массивов, которые не обязательно должны быть одинаковой длины. (Согласно документации matplotlib )
Таким образом, для построения гистограммы функции необходим массив, содержащий различные интенсивности пикселей, из которых вы хотите построить гистограмму и который возвращается функцией, определенной в программе.
Короче говоря, функция возвращает массив, содержащий все значения пикселей, и этот массив будет позже использован для построения гистограммы.
Надеюсь, вы получили то, что искали:)
Редактировать ::
Я постараюсь разбить вещи, чтобы вы хорошо поняли,
во-первых, img.shape, возвращает кортеж из трех значений (высота изображения, ширина изображения, количество каналов)
-> img.shape [0] означает, что он выберет высоту изображения, и, как в коде, также выполняется деление на пол, что даст половину высоты изображения (для значения Float после деления).
Это были две важные вещи, которые нужно понять в этой строке.
Итак, на самом деле он нарезает изображение целиком, как это видно из кода. Теперь эта нарезка начинается с половины высоты изображения до последней строки изображения. Нужно было нарезать нижнюю половину изображения.
Нарезка может быть лучше понята по этому,
img.shape [half_height_start:,:]
Befor ',' - разрезает пиксели от половины высоты до нижнего ряда изображения
и после ',' он разрезает все строки на изображении или на всю ширину изображения.
Для чтения о нарезке в Python вы можете увидеть здесь
теперь следующий вопрос, программа выполняет np.sum () над вертикальными столбцами, которые будут возвращать сумму каждого столбца в массиве. Программа фактически делает это так, что печатает только n (количество столбцов) количество столбцов в изображении, возможно, для лучшей визуализации графика. Все дело в коде.
Вы также можете удалить эту часть и напрямую вернуть bottom_img, но в этом случае гистограмма будет печатать частоту всех пикселей.
Все дело в коде.
Надеюсь, это очистит ваши сомнения.