- aruco board: use solvePnP

- refactored
This commit is contained in:
2025-11-24 22:07:05 +01:00
parent 4431f3a574
commit 4c40a7e191
3 changed files with 21 additions and 18 deletions
+4 -4
View File
@@ -58,7 +58,7 @@ def process_video(detector: cv.aruco.ArucoDetector, board):
if k == ord('q'):
break
def process(detector: cv.aruco.ArucoDetector, board, img, mtx, dist): # Load previously saved data
def process(detector: cv.aruco.ArucoDetector, board: cv.aruco.Board, img, mtx, dist): # Load previously saved data
gray = cv.cvtColor(img, cv.COLOR_BGR2GRAY)
(corners, ids, rejected) = detector.detectMarkers(gray)
@@ -69,11 +69,11 @@ def process(detector: cv.aruco.ArucoDetector, board, img, mtx, dist): # Load pre
if len(corners) > 0:
# Estimate pose of each marker and return the values rvec and tvec---(different from those of camera coefficients)
pose, rvec, tvec = cv.aruco.estimatePoseBoard(corners, ids, board, mtx, dist, None, None)
obj_points, img_points = board.matchImagePoints(corners, ids)
pose, rvec, tvec = cv.solvePnP(obj_points, img_points, mtx, dist, None, None)
if pose:
# Draw Axis
cv.drawFrameAxes(img, mtx, dist, rvec, tvec, 0.02)
cv.drawFrameAxes(img, mtx, dist, rvec, tvec, 20)
cv.imshow('img', img)