Я использую:
- Windows
- Python 3.10.5
- opencv-contrib-python 4.7.0.72
Код: Выделить всё
import cv2
img = cv2.imread("april_board_drawing.png", cv2.IMREAD_COLOR)
aruco_dict = cv2.aruco.getPredefinedDictionary(cv2.aruco.DICT_APRILTAG_36h11)
arucoParams = cv2.aruco.DetectorParameters()
arucoParams.markerBorderBits = 2
(corners, ids, rejected) = cv2.aruco.detectMarkers(img, aruco_dict, parameters=arucoParams)
cv2.aruco.drawDetectedMarkers(img, corners, ids)
cv2.imshow('img', img)
cv2.waitKey(0)
cv2.destroyAllWindows()
ideal image.png
Затем я приступил к записи с камеры. И тут возникла проблема. Было обнаружено лишь очень небольшое количество маркеров (15/49). Для этого я выбрал одно из лучших изображений, которые я сделал. Не все маркеры идеальны, есть блики, но многие имеют неплохую контрастность и до сих пор не распознаются. Я поигрался с параметрами обнаружения, но безуспешно.
real image.png
Может быть, я подумал, что искажение слишком сильное. Поэтому я исправил изображение, тем самым убрав искажения, и попробовал еще раз. Это дало мне несколько дополнительных обнаружений (20/49), но многие из них до сих пор не обнаружены.
реальное изображение исправлено.png
Затем у меня было посмотрите на отклоненные маркеры. Кажется, они отвергнуты правильно. Никаких проблем. Хотя странно, что несколько маркеров почти верны. Не уверен, что там происходит. Я указал правильный размер границы.
rejections.png
Другие вещи, которые я пробовал:
- изменение размера, обрезка и переворачивание входного изображения
- ввод оттенков серого и цвета
- настройка всех aruco.DetectorParameters
Геометрия калибровочной доски не кажется проблемой, поскольку на идеальном чертеже маркеры распознаются правильно, не так ли? Я предпочитаю использовать этот тип доски из-за ее высокой плотности маркеров и возможности субпиксельной обработки углов.
Есть идеи, что здесь не так? Мы очень ценим любую помощь!
Вот все изображения, которые я использовал:
april_board_drawing.png
april_board_real.png
april_board_real_rectified.png
Подробнее здесь: https://stackoverflow.com/questions/758 ... ew-markers