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()