Задать вопрос
@mardokvk
Я junior-программист, мой профиль С#, изучаю С++.

Работа с изображениям, как создать своё на C++?

Я не понимаю как создать свою обработку изображений. Пытался искать в интернете с чего начинается изображения, как создать свой формат. Хочу написать код для работы с изображениями под свои задачи, научиться делать скрины экрана, может быть обрабатывать видео. Сейчас я пользуюсь bitmap и командой GetPixel. Но хочу написать свое или хотя бы попытаться.

Я прошу помочь мне найти информацию, что почитать, где искать, возможно что конкретно нужно искать. Не могу понять с чего начинать. Искал инфу, но что-то у меня не выходит. Буду благодарен за любую информацию.
  • Вопрос задан
  • 675 просмотров
Подписаться 2 Простой 3 комментария
Пригласить эксперта
Ответы на вопрос 4
2ord
@2ord
Для старта: формат изображений QOI. Там же и спецификация формата.
Или же BMP.

Хочу написать код для работы с изображениями под свои задачи
Весьма расплывчатая хотелка.

научиться делать скрины экрана
Захват экрана делается системными вызовами. В разных ОС по-разному. Надо читать их SDK. В дистрибутивах Линукса есть различные менеджеры окон и у них разные SDK.
Захватив изображение и получив матрицу пикселей, возможно, необходимо проделать какие-то операции над изображением и сохранить в некотором формате изображения (BMP, QOI, PNG).

может быть обрабатывать видео
видео - это последовательность фреймов изображений определённым кодеком. Сжатие данных само по себе - обширная тема и нужно читать отдельно. Например, в compression.ru . Пока не поймёшь что можно делать с изображениями, к работе с видео лучше не переходить.
Ответ написан
Комментировать
mayton2019
@mayton2019
Bigdata Engineer
В наше время уже почти никто не пишет такие библиотеки. Все вроде написано. Проблемы с писательством библиотек такие. Если ты кодишь на сях под Windows то ты полюбому захочешь как-то их отображать и тебе в библиотеку придется вводить сущности мира WinGDI например.

Поиск изображения внутри скриншота - это тяжелая задача. Алгоритмически тяжелая. И здесь обычно привлекают нейросети, преобразования Фурье, хеш-коды изображений и прочие функции которые уходят от растра к другому виду данных которые более пригодны для быстрого поиска.

По названиям нейросетей я ничего не скажу я их не знаю в именах. Поищи их названия в Python-библиотеках.
Они на слуху. А потом он них - найдешь оригинальное название на сях.

Посмотри еще в ImageMagic https://imagemagick.org/script/magick++.php может пригодится
Ответ написан
Комментировать
@vanyamba-electronics
Погуглите "processing 4".
Ответ написан
Комментировать
HemulGM
@HemulGM
Delphi Developer, сис. админ
Bitmap - это самый просто и примитивный формат изображения, который просто хранит массив пикселей в чистом виде. Вот прям напрямую пиксель за пикселем. Другие форматы не хранят так данные, а зачастую используют алгоритмы сжатия и/или предобработки изображения для последующего сжатия.
Bitmap может быть нарисован напрямую, а другие форматы изображений должны сначала быть преобразованными в формат для отрисовки.

И вашего вопроса ничего не понятно, что вы хотите сделать и для чего. Скрин экрана делается разными способами с разным результатом.
1. Запрос поверхности рабочего стола и её рисование на картинке (при этом полноэкранные приложения со своим контекстом вывода не будут отображаться (игры например)
2. Более сложный способ получения - захват экрана на низком уровне (при этом будет захвачено то, что отображает монитор(ы))
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы