Интересно.В вашей программе нет ничего плохого.Я попробовал то же самое в Python и C ++ и получил тот же результат, что и вы.Поэтому я попытался с другим изображением и был успешным.
Вот моя программа.По сути, он такой же, как у вас, но учтите, что я использую другой словарь.
import numpy as np
import cv2
import cv2.aruco as aruco
image = cv2.imread("52814747.png")
aruco_dict = aruco.Dictionary_get(aruco.DICT_4X4_50)
parameters = aruco.DetectorParameters_create()
corners, ids, rejectedImgPoints = aruco.detectMarkers(
image, aruco_dict, parameters=parameters)
print(corners, ids, rejectedImgPoints)
aruco.drawDetectedMarkers(image, corners, ids)
aruco.drawDetectedMarkers(image, rejectedImgPoints, borderColor=(100, 0, 240))
cv2.imshow('so52814747', image)
cv2.waitKey(0)
cv2.destroyAllWindows()
Я не знаю, связана ли проблема со словарем 6X6 или исходное изображение не имеет достаточного разрешенияработать со словарем 6х6.Но в этом уроке определенно что-то не так.Я сообщил о проблеме на GitHub .
Вот изображение, которое я использовал.
И вотрезультат.(Найденные маркеры имеют зеленые границы. Отклоненные кандидаты имеют красные границы.)