34 lines
1.1 KiB
Python
34 lines
1.1 KiB
Python
|
import cv2 as cv
|
||
|
import cv2.aruco as aruco
|
||
|
from calibrate import calculareCameraCalibration
|
||
|
|
||
|
cap = cv.VideoCapture(0)
|
||
|
ret, mtx, dist, rvecs, tvecs = calculareCameraCalibration()
|
||
|
parameters = aruco.DetectorParameters_create()
|
||
|
aruco_dict = aruco.Dictionary_get(aruco.DICT_4X4_50)
|
||
|
drawAxis = True
|
||
|
|
||
|
while (True):
|
||
|
|
||
|
ret, frame = cap.read()
|
||
|
gray = cv.cvtColor(frame, cv.COLOR_BGR2GRAY)
|
||
|
|
||
|
corners, ids, rejectedImgPoints = aruco.detectMarkers(gray, aruco_dict, parameters=parameters)
|
||
|
|
||
|
frame = aruco.drawDetectedMarkers(frame, corners, ids)
|
||
|
rvecs, tvecs, _ = aruco.estimatePoseSingleMarkers(corners, 0.05, mtx, dist)
|
||
|
if ids is not None:
|
||
|
for idx, marker in enumerate(ids):
|
||
|
print(corners[idx][0]) #Affiche les coordonée tout les coins Top Left
|
||
|
try:
|
||
|
if drawAxis is True:
|
||
|
aruco.drawAxis(frame, mtx,dist,rvecs[idx], tvecs[idx], 0.1)
|
||
|
except:
|
||
|
print(" Erreur calcul des axes")
|
||
|
|
||
|
cv.imshow('frame', frame)
|
||
|
if cv.waitKey(1) & 0xFF == ord('q'):
|
||
|
break
|
||
|
|
||
|
cap.release()
|
||
|
cv.destroyAllWindows()
|