C++ i Python3

0

Witam. Piszę aplikacje która przeprowadza pewne operacje na obrazie. Wykorztstuje przy tym bibliotekę QT4 aby stworzyć GUI, następnie fftw3 i OpenCV do przetwarzania obrazu. Zastanawiam się teraz nad tym jak połączyć pythona z c++ aby moja aplikacja była bardziej elastyczna, czyli żeby użytkownik mógł np. definiować kolejność wykonywania filtrów bez implementacji ich na sztywno w kodze c++. Aby lepiej przedstawić o co mi chodzi, postaram się to zobrazować:

  1. Użytkownik odpala aplikacje w c++
  2. Wczytuje obraz
  3. Definiuje lub wybiera już gotowe filtry <- ten punkt rozwinę później.
  4. Klika start
  5. Aplikacja przetwarza obraz na podstawie wybranego filtru i wyświetla przetworzony obraz.

Rozwinięcie punktu 3:

Powiedzmy, że użytkownik ma do wyboru gotowy filtr który wygląda tak:
Obiekt->filtrA(arg)
Obiekt->filtrB(arg)
Obiekt->filtrC(arg)

Ale co gdy by chciał np. wywołać taką kombinacje filtrów:
Obiekt->filtrC(arg)
Obiekt->filtrB(arg)
Obiekt->filtrC(arg)
Obiekt->filtrA(arg)
Obiekt->filtrA(arg)

Oczywiście możliwe jest np. wybór po kolei z menu > dany filtr, ale co gdyby użytkownik chciał by 100 razy wywołać taką kombinacje. Aż się prosi o wykorzystanie jakiegoś języka skryptowego.

Gdy by ktoś miał pomysł to proszę o przedstawienie go tutaj. Z góry dziękuje.

0

Koniecznie Python ? Bo bardzo prosto byłoby to zrobić za pomocą LUA. Lekki język, i myślę, że do tego co chcesz zrobić byłby bardzo dobry.

0

To nie musi być koniecznie Python (chociaż wolał bym go ponieważ już trochę go znam), może być Lua. Jeśli mógłbyś podać algorytm w pseudo kodzie jak byś to zrobił to było by miło z twojej strony.

1

Możesz to zrobić w ten sposób:

Wyeksportować sobie obiekt obrazu do Lua (jako typ, bardzo prosto się to robi a nawet może użyć jakiegoś automatu typu tolua++).
Wyeksportować funkcje tych filtrów, przyjmujące jako argument obiekt obrazu.
Dać userowi możliwość wyboru skryptu którym zajmie się już Lua i wykona wszystkie filtry ( i ogólnie wszystko co było w tym skrypcie ). Skrypt wczytujesz jako moduł i do niego dodajesz typ obiektu. Albo np. z tego skryptu pobierasz funkcje która będzie przyjmować obiekt obrazu i ten obiekt podasz przy wywołaniu funkcji z kodu. Albo dodasz funkcje która będzie zwracać obraz np. po nazwie. Możliwości jest naprawdę dużo ;).

To jest bardzo proste. Zarówno wbudowanie Lua do programu, jak i eksport tych funkcji czy obiektów do Lua.

http://firsthost.nazwa.pl/wordpress/2010/06/27/lua-w-c-api-dla-skryptow/
http://csl.sublevel3.org/lua/

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.