2017-12-20 2 views
6

Meine Kamerakalibrierung und Verzerrung Matrizes erkennen, erhalten von aruco_calibration_fromimages.exe:cv2.aruco.detectMarkers keine Markierungen in Python

[[3.19439125e+03 0.00000000e+00 1.98509417e+03] 
    [0.00000000e+00 3.20213561e+03 1.55099552e+03] 
    [0.00000000e+00 0.00000000e+00 1.00000000e+00]] 

[[0.1395281 -0.38313647 0.00505558 0.00237535 0.33952515]] 

Bild, wo ich zu erkennen versuchen:

enter image description here

aruco_simple.exe gelingt

enter image description here

Aber Python-Code nicht, etwas zu finden:

fs = cv2.FileStorage("./calib_asus_chess/cam_calib_asus.yml", cv2.FILE_STORAGE_READ) 
cam_mat=fs.getNode("camera_matrix").mat() 
dist_mat=fs.getNode("distortion_coefficients").mat() 
gray=cv2.imread('C:\\Users\\steve\\Dropbox\\Projects\\kinnekt\\laser\\aruco_frames\\shot1.jpg',0) 
adict = cv2.aruco.Dictionary_get(cv2.aruco.DICT_ARUCO_ORIGINAL) 
res = cv2.aruco.detectMarkers(gray,dictionary=adict,cameraMatrix=cam_mat,distCoeff=dist_mat) 

res [0] ist leer Array aus irgendeinem Grund. Warum schlägt die Python-Version fehl? Danke!

+2

Um ehrlich zu sein, habe ich alle Flags namens 'cv2.aruco.DICT_XXX' versucht, die Ergebnisse blieben gleich. Alle sind falsch. – Silencer

+0

Dies ist wahrscheinlich nicht verwandt, aber das Papier sieht (nicht sicher), als wäre es nicht flach auf dem Tisch. Dies kann die Genauigkeit der Kalibrierergebnisse beeinträchtigen ... – etarion

+0

C++ aruco erkennt auf diesem Bild Markierungen richtig –

Antwort

3

Wahrscheinlich verwenden Sie ein Wörterbuch, das nicht Ihrem Bild entspricht. Nach dem documentation cv2.aruco.DICT_ARUCO_ORIGINAL ist 5x5:

DICT_ARUCO_ORIGINAL: Standard ArUco Bibliothek Marker. 1024 Markierungen, 5x5 Bits, 0 Mindestabstand

Ihr Bild 6x6-Symbole statt 5x5 hat, ist der Grund, warum es nicht funktioniert.

Sie können die Funktion drawMarker() verwenden, um einige Marker des Wörterbuchs in einem Bild zu zeichnen und sie dann zu drucken und für Ihren Test zu verwenden.

Zum Beispiel here können Sie download DICT_4X4_50 icons. Sie können sie drucken und ändern Sie Ihren Code, um DICT_4X4_50 anstelle von DICT_ARUCO_ORIGINAL