ArUko Marker

Aus HSHL Mechatronik
Zur Navigation springen Zur Suche springen

Einbindung der OpenCV Library in Matlab

Es sind im Grunde drei Bereiche: openCV, das MATLAB Computer Vision Toolbox openCV Interface und das Erzeugen einer MEX Datei, welche die Funktionen der contrib Module zugänglich macht. Für den letzten Teil erhalten Sie von uns die notwendige *.cpp.

openCV

  1. Laden Sie den Source Code von openCV 3.1 herunter: https://github.com/opencv/opencv/tree/3.1.0
  2. Laden Sie das contrib Repository herunter: https://github.com/opencv/opencv_contrib/tree/3.1.0
  3. Installieren Sie openCV auf Ihrem Rechner nach der folgenden Anleitung: https://github.com/opencv/opencv_contrib/blob/master/README.md
  4. Notieren Sie sich bitte wo die Library gebaut werden und wohin die Header kopiert werden.

MATLAB & Computer Vision System Toolbox

  1. Installieren Sie die Computer Vision System Toolbox (in Ihrer Lizenz enthalten), z.B. über den MATLAB Desktop -> AddOns -> GetAddOns.
  2. Installieren Sie das Computer Vision System Toolbox openCV Interface nach folgender Anleitung: https://www.mathworks.com/help/vision/ug/opencv-interface.html#buxwnlt
  3. (optional) Video Using OpenCV with MATLAB (http://youtu.be/BasC2jkgyaM)

ArUco

Unten finden Sie die Datei getaruco.cpp.Führen Sie folgendem Befehl im MATLAB Command Window aus:

 >> mexOpenCV getaruco.cpp -L~/opencv310/lib/ -lopencv_aruco.3.1.0 -I/usr/local/include

Wichtig ersetzen Sie die Pfade entsprechend Ihrer openCV Installation. Erläuterung der flags:<\br> -L looks in directory for library files.<\br> -l links with a library file.<\br> -I adds include directory of header files<\br>

Flag Erläuterung
-L looks in directory for library files
-l links with a library file
-I adds include directory of header files

Es sollte jetzt die MEX Datei getaruco.mexw64 erzeugt worden sein. Damit sollten Sie getaruco wie andere MATLAB Funktionen auch verwenden können. Beispielhaft wurde getaruco.cpp so geschrieben. dass ein 1000x1000 uint8 Image erzeugt wird, dass eine markerId von 12 und eine "border bits size" von 1 hat. Probieren Sie z.B.:

>> im = getaruco(1000,12,1);

Um die Klassen der ArUco Module zu nutzen, müssen Sie die mexFunction() in getaruco.cpp verändern. Für unterschiedliche Funktionen bietet es sich an, z.B. getArucoFunctionOne.cpp, getArucoFunctionTwo.cpp etc. zu schreiben. Nach etwas Arbeit können Sie ArUco direkt aus MATLAB heraus nutzen. Die Entwickler haben mich noch darauf hingewiesen, das wir nicht gegen highgui, videoio oder imgcodecs Libraries linken. Dinge wie 'imshow' aus openCV sind damit nicht verfügbar.


Quelle: Steve Schäfer, MathWorks Technical Support Department

Quelltext

Datei:Getaruco.cpp