Page 1 of 1

Image transform - программа для преобразования изображений

Posted: Sat May 16, 2020 7:51 pm
by IgorA
Программу можно использовать для выравнивания искаженных изображений изначально прямоугольной (квадратной) формы, для создания текстур и т.д. После открытия файла изображения нужно указать 4 точки, которые станут углами преобразованного изображения. Для выбора точки нужно навести курсор мыши в нужное место и нажать кнопку на клавиатуре цифру от 1 до 4, в зависимости от того какую точку нужно установить в выбранное место. Для более точной установки координат можно выделить точку нажатием на ней курсором мыши, а потом курсорами на клавиатуре двигать точку в нужное место.
Во вложении пример программы с исходным и преобразованным изображением.
Spoiler:
Окно с исходным изображением
img_02.png (225.21 KiB)
Окно с исходным изображением Viewed 7241 times
Окно с преобразованным изображением
img_03.png (72.25 KiB)
Окно с преобразованным изображением Viewed 7241 times
Внес программу на svn в ревизии 7929.

Re: Image transform - программа для преобразования изображений

Posted: Sun May 17, 2020 11:34 pm
by Leency
Функционал реально впечетляющий! Управление мне кажется было бы удобнее мышкой...

Re: Image transform - программа для преобразования изображений

Posted: Mon May 18, 2020 12:00 pm
by IgorA
Leency wrote:Управление мне кажется было бы удобнее мышкой...
Что-бы контрольные точки мышей перемещать? Наверное надо будет добавить и такое, потому что бывает не очень удобно.

Алгоритм работы программы:
Открывается изображение и из него делается текстура для библиотеки TinyGL. (Если ширина изображения не кратна 2-м в какой-либо степени то оно дополняется пустыми полями с двух сторон до нужной ширины).
Пользователь задает 4 контрольные точки, 5-я точка вычисляется как среднее арифметическое от этих 4-х точек.
Вычисляются текстурные координаты для точек (в пределах от 0 до 1).
Рисуются 4 треугольника оп выпрямленным координатам.
Если все устраивает можно сохранять полученное изображение.

Еще нужно будет сделать автоматическое дополнение изображения полями по высоте, если размер не кратный 2 в степени.