Как я могу применить 3D-преобразования к изображению?

Я пытаюсь (в коде) взять файл изображения и применить к нему трехмерные преобразования (думаю: перспектива).

Приложение, над которым я работаю, написано на C#, и я уже посмотрел информацию MSDN о перекосе / повороте изображений. К сожалению, этого недостаточно для управления - мне нужна функциональность, предлагаемая инструментом "Перспектива", который предлагает GIMP/Photoshop.

Я уже использую P/Invoke для вызова следующих C++ DLL (вытащил их из папки GIMP /bin) для других функций изображения:

[DllImport("libgobject-2.0-0.dll", SetLastError = true)]
[DllImport("librsvg-2-2.dll", SetLastError = true)]
[DllImport("libgdk_pixbuf-2.0-0.dll", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Ansi)]

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

Я хотел бы выяснить способ использования этих библиотек (libgdk-pixbuf-2.0, libgobject) и других, при необходимости, для выполнения трехмерных преобразований, которые мне нужно сделать.

У кого-нибудь есть предложения? Я открыт для других идей, но мне действительно нравится идея использовать эти библиотеки с открытым исходным кодом, чтобы получить работу.

1 ответ

Открытое резюме имеет функцию warpPerspective, которая точно соответствует вашим потребностям. Для работы в C# вы можете рассмотреть Emgu.cv aC# wrapper для OpenCV.

Другие вопросы по тегам