Пример Aruco OpenCV, все маркеры отклонены - PullRequest
0 голосов
/ 15 октября 2018

Я следую этому примеру.

Пример OpenCV Aruco с изображением

И ниже приведен фрагмент кода, который я использую для обнаружения маркеров.Я не могу понять, почему этот пример не работает для меня.

import numpy as np
import cv2
import cv2.aruco as aruco
import os

im_names = filter(lambda x: x.endswith('.png'),
                  [f for f in os.listdir('local_vids_ims')])

for imn in im_names:
    image = cv2.imread('local_vids_ims/' + imn)
    # image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
    aruco_dict = aruco.Dictionary_get(aruco.DICT_6X6_250)
    parameters = aruco.DetectorParameters_create()
    corners, ids, rejectedImgPoints = aruco.detectMarkers(
        image, aruco_dict, parameters=parameters)
    print(corners, ids, rejectedImgPoints)
    # aruco.drawDetectedMarkers(image, corners)
    aruco.drawDetectedMarkers(image, rejectedImgPoints)
    cv2.imshow('gray_im', image)
    cv2.waitKey(0)
    cv2.destroyAllWindows()

Local Run of above code, all markers rejected.

1 Ответ

0 голосов
/ 15 октября 2018

Интересно.В вашей программе нет ничего плохого.Я попробовал то же самое в 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 .

Вот изображение, которое я использовал.

source image

И вотрезультат.(Найденные маркеры имеют зеленые границы. Отклоненные кандидаты имеют красные границы.)

result image

...