2013-11-07 3 views
1

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

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

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

[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) и другие, если необходимо, для выполнения трехмерных преобразований, которые мне нужно сделать.

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

+0

Если вы хотите написать программное обеспечение самостоятельно, изучите аффинные преобразования. .NET поддерживает их, последний раз я проверил. – Rethunk

ответ

1

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

Смежные вопросы