Note
This notebook can be downloaded here: Aruco_detection_direct.ipynb
import numpy as np
import matplotlib.pyplot as plt
import cv2
import cv2.aruco as aruco
import time
%matplotlib tk # inline, nbagg
aruco_dict = aruco.Dictionary_get(aruco.DICT_6X6_250)
img = aruco.drawMarker(aruco_dict, 2, 700)
cv2.imwrite("test_marker.jpg", img)
angle=[]
cv2.waitKey(0)
cv2.destroyAllWindows()
cap = cv2.VideoCapture(0)
size_of_marker = 0.045
while(True):
ret, frame = cap.read()
gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
aruco_dict = aruco.Dictionary_get(aruco.DICT_6X6_250)
parameters = aruco.DetectorParameters_create()
''' detectMarkers(...)
detectMarkers(image, dictionary[, corners[, ids[, parameters[, rejectedI
mgPoints]]]]) -> corners, ids, rejectedImgPoints
'''
size_of_marker = 0.045
corners, ids, rejectedImgPoints = aruco.detectMarkers(gray, aruco_dict, parameters=parameters)
frame = aruco.drawDetectedMarkers(frame, corners)
cv2.imshow('frame',frame)
imsize = gray.shape
dist = np.zeros((5,1))
mtx = np.array([[ 2000., 0., imsize[0]/2.],
[ 0., 2000., imsize[1]/2.],
[ 0., 0., 1.]])
rvecs,tvecs, trash = aruco.estimatePoseSingleMarkers(corners, size_of_marker, mtx, dist )
angle.append(rvecs)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
# When everything done, release the capture
cap.release()
cv2.destroyAllWindows()
t=time.sleep
plt.xlabel('temps')
plt.ylabel('angle')
plt.plot(t,angle)
plt.show()
plt.figure()
plt.plot(np.random.rand(10), "or-")
plt.show()