|
|
||||||||||||
Конвертация изображения средствами numpy07.03.2018, 22:08. Показов 10618. Ответов 7
Нашел вот такое задание на форуме
Как это сделать на pure python - понятно. К тому же легко гуглятся примеры на хабре. Однако, попытка написать такое же преобразование чисто на numpy (плюс PIL для открытия изображения) дала код, который работает не то чтобы медленно... ужасно медленно. В 10 раз медленнее, чем с python циклами. Стало интересно, а можно ли вообще написать нормально работающую реализацию, следуя этому заданию? Для сравнения также использован пример чисто на встроенных функциях PIL (grayscale_pillow), который работает так и должно все работать. Вот замеры работы всех функций:
Но именно она - при использование моей функции apply_gray для каждого пикселя - работает крайне неэффективно. Если кто-то захочет разобраться почему так и как написать правильно, смотрите код.
0
|
||||||||||||
| 07.03.2018, 22:08 | |
|
Ответы с готовыми решениями:
7
Работа с матрицами средствами NumPy
Представление изображения в виде массива NumPy |
|
277 / 226 / 93
Регистрация: 27.06.2016
Сообщений: 639
|
||||||
| 07.03.2018, 23:06 | ||||||
Сообщение было отмечено Garry Galler как решение
Решение
Garry Galler, у numpy вообще говоря каноничное использование - это всячески операции векторизовать.
Вот что я смог выжать постаравшись не напрягаться:
grayscale :0.2801399230957031 grayscale pillow :0.006412506103515625 grayscale_numpy :0.01502847671508789 black_white :0.22236919403076172
1
|
||||||
|
1741 / 913 / 480
Регистрация: 05.12.2013
Сообщений: 3,074
|
|
| 07.03.2018, 23:22 | |
|
Почему-то результат grey2, явно отличается от результатов gray и gray3
0
|
|
|
|
|||
| 08.03.2018, 00:01 [ТС] | |||
|
В общем все классно :-). Работает на моем проце, конечно, медленнее, чем в вашем бенчмарке, но хотя бы раз в 8 быстрее, чем в pure python. ----------------------------------- Добавлено через 12 минут То что через через Image.convert быстрее? Так в PIL своя реализация grayscale - уже на чисто на С наверно.
1
|
|||
|
1741 / 913 / 480
Регистрация: 05.12.2013
Сообщений: 3,074
|
||
| 08.03.2018, 00:02 | ||
|
tiger_black_white.jpg tiger_gray.jpg tiger_gray2.jpg tiger_gray3.jpg Почему-то tiger_gray2 отличается от tiger_gray и tiger_gray3, но я уже нашел почему, цветность tiger_gray2 стала 8 бит, а у остальных осталась 24
0
|
||
|
|
||||||||||||
| 08.03.2018, 14:40 [ТС] | ||||||||||||
|
------------------------------------------------------------------------------------------ Дополню варианты преобразования в grayscale:
1
|
||||||||||||
|
Просто Лис
|
||||||
| 10.03.2018, 14:21 | ||||||
|
Garry Galler, проверь на скорость этот вариант:
0
|
||||||
|
|
|||||||
| 10.03.2018, 15:01 [ТС] | |||||||
Единственная серьезная разница - rgb2gray3 дает 8-битное изображение, раз мы не делаем np.repeat(sums, 3).
0
|
|||||||
| 10.03.2018, 15:01 | |
|
Помогаю со студенческими работами здесь
8
Пример кодирования изображения BMP в JPG средствами Python
Конвертация doc/docx документов в HTML средствами PHPWord Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога
Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
|
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога
Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
|
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога
Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
|
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
|
|
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога
В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
|
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
|
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога
Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
|
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
|