0
import cv2
import cv2.aruco as aruco

marker_dict = aruco.getPredefinedDictionary(aruco.DICT_4X4_50)
parameters = cv2.aruco.DetectorParameters()

cap = cv2.VideoCapture(0)

while True:
    ret, frame = cap.read()
    if not ret:
        break
    gray_frame = cv2.cvtColor (frame,cv2.COLOR_BGR2GRAY)
    detector = cv2.aruco.ArucoDetector(marker_dict, parameters)
    marker_corners, marker_IDs, reject = detector.detectMarkers(
    gray_frame, marker_dict, parameters=parameters)
    print(marker_IDs)
    cv2. imshow ("frame", frame)
    key = cv2.waitKey(1)
    if key == ord("g"):
        break
cap.release()
cv2.destroyAllWindows()

detectMarker bad argument

I think function argument is similar to previous version of aruco

    marker_corners, marker_IDs, reject = detector.detectMarkers(
cv2.error: OpenCV(4.7.0) :-1: error: (-5:Bad argument) in function 'detectMarkers'
> Overload resolution failed:
>  - 'parameters' is an invalid keyword argument for aruco_ArucoDetector.detectMarkers()
>  - 'parameters' is an invalid keyword argument for aruco_ArucoDetector.detectMarkers()
saurabheights
  • 3,967
  • 2
  • 31
  • 50

1 Answers1

0

There is no need to pass variables marker_dict and parameters to ArucoDetector. You already gave this information when creating ArucoDetector object. Just pass the image to detector.

marker_corners, marker_IDs, reject = detector.detectMarkers(gray_frame)
saurabheights
  • 3,967
  • 2
  • 31
  • 50