Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.63/120: Рейтинг темы: голосов - 120, средняя оценка - 4.63
 Аватар для LiJuan_Jhao
22 / 22 / 0
Регистрация: 11.11.2019
Сообщений: 108

Минифотошоп

08.03.2020, 11:10. Показов 23964. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
помогите, пожалуйста, а то в теме только эту задачку не удалось сделать

Сейчас существует огромное количество приложений для обработки фотографий, многие из них могут похвастаться интересными и довольно сложными фильтрами, в результате применения которых изображение может измениться до неузнаваемости.
Подавляющее большинство сложных фильтров для преобразования используют информацию не только о цвете пикселя, к которому применяется преобразование, но и о его «соседях». Зачастую в преобразованиях используется не один ряд соседних пикселей.
В общем случае сигнатуру функции, которая реализовывает такое преобразование, можно описать следующим образом:

Python
1
2
3
def image_filter(pixels, i, j):  
    ...  
    return r, g, b
То есть функция принимает на вход некоторый массив пикселей, а также координаты того пикселя, к которому применяется преобразование (потому что он не всегда будет в центре – например, при обработке краёв изображения). В результате преобразования функция возвращает кортеж цветов целевого пикселя после преобразования. При преобразовании можно (но не обязательно) учитывать соседние пиксели.
Например, вот такой фильтр ничего не делает (изображение остаётся прежним):
Python
1
2
def image_filter(pixels, i, j):  
    return pixels[i][j]
А вот пример фильтра, который заменяет цвет исходного пикселя на средний относительно его окружения:

Python
1
2
3
4
5
6
7
8
9
10
def image_filter(pixels, i, j):  
    """Заменяет цвет исходного пикселя на средний относительно его окружения"""  
    r, g, b = 0, 0, 0  
    for row in range(11):  
        for col in range(11):  
            if row != i or col != j:  
                r += pixels[row, col][0]  
                g += pixels[row, col][1]  
                b += pixels[row, col][2]  
    return int(r / 120), int(g / 120), int(b / 120)
Напишите свою функцию image_filter(pixels, i, j) (не обязательно с таким названием, главное – чтобы с такой сигнатурой), в которой реализован какой-нибудь фильтр для изображения. Она может, например, увеличивать контраст, делать сглаживание и т. д.
Напишите к своей функции краткое описание в docstring как в примере выше. Посмотрите, как теперь будет выглядеть результат функции help() для вашей функции.
Если у вас будет несколько фильтров, которые придерживаются такой же сигнатуры, из них можно будет собирать целые конвееры для получения сложных эффектов.

Примечания
Если идея для фильтра не придумывается, ее можно «подсмотреть» в Instagram или в любом другом приложении для обработки фото. Кроме того, можете почитать документацию на модуль ImageFilter библиотеки PIL и поискать вдохновения там.
Задача проверяется преподавателем.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
08.03.2020, 11:10
Ответы с готовыми решениями:

Реализация фильтра для изображения: увеличивать контраст, делать сглаживание и т. д.
Напишите свою функцию image_filter(pixels, i, j) (не обязательно с таким названием, главное – чтобы с такой сигнатурой), в которой...

Минифотошоп
Напишите функцию, в которой реализован какой-нибудь фильтр для изображения. Она может, например, увеличивать контраст, делать сглаживание и...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
5516 / 2869 / 571
Регистрация: 07.11.2019
Сообщений: 4,760
08.03.2020, 12:11
CoMeLLa, что именно не получается или не понятно? Или вы хотите что бы задание сделали вместо вас?
0
 Аватар для LiJuan_Jhao
22 / 22 / 0
Регистрация: 11.11.2019
Сообщений: 108
08.03.2020, 12:48  [ТС]
u235, я делала, но у меня сигнатура не подходит
0
 Аватар для LiJuan_Jhao
22 / 22 / 0
Регистрация: 11.11.2019
Сообщений: 108
08.03.2020, 13:01  [ТС]
u235, не подскажешь, как мне установить библиотеку docx, а то у меня никак не получается
Миниатюры
Минифотошоп  
0
Эксперт С++
 Аватар для Avazart
8488 / 6155 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
08.03.2020, 13:12
CoMeLLa, Открой для себя библиотеку OpenCv
0
5516 / 2869 / 571
Регистрация: 07.11.2019
Сообщений: 4,760
08.03.2020, 16:59
CoMeLLa, сигнатура, это, видимо, входные и выходные параметры функции. Как они могут не подходить...?
Код покажите.
docx вам для этой задачи не нужен.

Добавлено через 26 минут
Avazart, плохой совет.
Человек еще даже PIL (велосипед) не освоил, а вы ему уже OpenCV(космический лайнер) предлагаете..
0
Эксперт С++
 Аватар для Avazart
8488 / 6155 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
08.03.2020, 17:02
А зачем ему PILlow если есть OpenCv?
0
5516 / 2869 / 571
Регистрация: 07.11.2019
Сообщений: 4,760
08.03.2020, 17:07
Для несложных манипуляций с изображениями...
Каждому инструменту своя область применения. Зачем велосипеды, когда есть космические корабли? Элементарно проще добираться на небольшие растояния.
0
 Аватар для LiJuan_Jhao
22 / 22 / 0
Регистрация: 11.11.2019
Сообщений: 108
09.03.2020, 08:32  [ТС]
u235, вот код:
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
from PIL import Image
 
 
def negative(source, res):
    source = Image.open(source)
 
    result = Image.new('RGB', source.size)
 
    for x in range(source.size[0]):
 
        for y in range(source.size[1]):
            r, g, b = source.getpixel((x, y))
 
            result.putpixel((x, y), (255 - r, 255 - g, 255 - b))
 
    result.save(res, "JPEG")
а docx мне просто для следующей темы нужен)))
1
5516 / 2869 / 571
Регистрация: 07.11.2019
Сообщений: 4,760
09.03.2020, 08:53
А теперь сравните с примером и прочитайте что нужно от вас.
Зачем читаете картинку и сохранияете?
1
 Аватар для LiJuan_Jhao
22 / 22 / 0
Регистрация: 11.11.2019
Сообщений: 108
09.03.2020, 11:00  [ТС]
u235, в принципе, у меня есть мысль, как переделать)))
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Ответ Создать тему
Новые блоги и статьи
1С: Программный отбор элементов справочника по группе
Maks 22.03.2026
Установка программного отбора элементов справочника "Номенклатура" из модуля формы документа. В качестве фильтра для отбора справочника служит группа номенклатуры. Отбор по наименованию группы. . .
Как я обхитрил таблицу Word
Alexander-7 21.03.2026
Когда мигает курсор у внешнего края таблицы, и нам надо перейти на новую строку, а при нажатии Enter создается новый ряд таблицы с ячейками, то мы вместо нервных нажатий Энтеров мы пишем любые буквы. . .
Krabik - рыболовный бот для WoW 3.3.5a
AmbA 21.03.2026
без регистрации и смс. Это не торговля, приложение не содержит рекламы. Выполняет свою непосредственную задачу - автоматизацию рыбалки в WoW - и ничего более. Однако если админы будут против -. . .
1С: Программный отбор элементов справочника по значению перечисления
Maks 21.03.2026
Установка программного отбора элементов справочника "Сотрудники" из модуля формы документа. В качестве фильтра для отбора служит значение перечислений. / / Событие "НачалоВыбора" реквизита на форме. . .
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru