为什么 aruco 在我的图像中检测不到标记

Why aruco doesn't detect markers in my image

我生成了一系列 aruco 标记 DICT_4X4_50 并打印了它们,但是当我在此图像上启动检测器时,它不起作用。虽然标记相当明显:

int main(int argv, char** argc)
{
    Mat frame = imread(argc[1], CV_LOAD_IMAGE_COLOR);

    vector<int> markerIds;
    vector<vector<Point2f>> markerCorners, rejectedCandidates;

    Ptr<aruco::Dictionary> markerDictionary = aruco::getPredefinedDictionary(aruco::PREDEFINED_DICTIONARY_NAME::DICT_4X4_50);

    aruco::detectMarkers(frame, markerDictionary, markerCorners, markerIds);


    aruco::drawDetectedMarkers(frame, markerCorners, markerIds);
    imshow("Webcam", frame);
    waitKey(0);

}

是图像不够好还是有一些参数我可以修改?

我已经检查了 rejectedCandidates,我发现它正在检测标记,但由于某种原因被拒绝了!

所以我转向了另一个标记,即 Apriltags,它提供了更好的结果。我不知道哪个库是最好的,但继续尝试看看哪个适合你。