Как стать автором
Обновить

Комментарии 7

Для перекладывания пикселей лучше использовать numpy. Можно будет писать код

img[1: -1, :] = np.max(img[0: -2, :], img[1: -1, :], img[2: 0, :])

и работать с целыми областями изображений. Под капотом вызовется код на си и тормозить не будет.

Было интересно, но какова финальная цель (ха-ха, кто бы говорил)? Не проще выполнить свёртку силами того же pillow с каким-нибудь дифференциальным оператором, например Лапласа или Собеля?

src = Image.open(r"/path/to/image")
src = src.convert("L")
dst = src.filter(ImageFilter.Kernel((3, 3), (0, 1, 0, 1, -4, 1, 0, 1, 0), 1, 1))

Не проще. Для этого надо документацию читать.

Вообще говоря, если в Питоне вам приходится писать цикл по элементам массива (в особенности если это пиксели изображения) или по DataFrame - то с вероятностью 99% вы делаете что-то радикально неверно. И ваш код - яркий тому пример.

А OpenCV - не вариант?

Очевидно, что в условиях лабораторки было не использовать библиотеки. Без сарказма.

Поставил плюсик автору авансом для мотивации в развитии.

Питон хорош именно как клей между библиотеками. Использование OpenCV или хотя бы numpy тут более чем осмысленно как с технической, так и с педагогической точки зрения.

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории