gpt4 book ai didi

c++ - 当我直接解析 Mat 时,未检测到 OpenCv Aruco 标记

转载 作者:行者123 更新时间:2023-11-28 05:38:40 24 4
gpt4 key购买 nike

希望你能帮帮我。我尝试使用 Aruco 标记来查找窗口的角。所以在每个角上添加了一个标记。但是当我试图检测标记时,他们没有被发现。如果它用智能手机拍照,然后尝试检测照片上的标记,它就会起作用。这是一个最低限度的工作代码示例:

#include <opencv2/opencv.hpp>
#include <stdlib.h>
#include <string>
#include <opencv2/aruco.hpp>
using namespace cv;
using namespace std;
using namespace aruco;

Dictionary dictionary;
int markerSize = 200;
vector<int> ids;
vector< vector<Point2f> > corners;


Mat addMarkertoImage(const Mat image){
Mat retImage, marker0;
image.copyTo(retImage);
drawMarker(dictionary, 0, markerSize, marker0, 1);

unsigned char value;

//Add marker to top left corner
for(int i = 0; i<marker0.rows; i++)
for(int j = 0; j<marker0.cols; j++){
value = marker0.at<uchar>(i,j);
Vec3b colorValue = Vec3b(value, value, value);
retImage.at<Vec3b>(i,j) = colorValue;}
return retImage;
}


int main(){
Mat image, image_marker;
dictionary = getPredefinedDictionary(cv::aruco::DICT_6X6_250);
image = imread( "bild.jpg", 1 );
image_marker = addMarkertoImage(image);
detectMarkers(image_marker, dictionary, corners, ids);
drawDetectedMarkers(image_marker, corners, ids);
imshow("Display Image", image_marker);
waitKey(0);
return 0;
}

任何想法,为什么这不起作用?但是我的 iPhone 相机拍摄的照片可以正常工作吗?

最佳答案

与此同时,我自己解决了问题,问题是使用默认配置时标记太大而无法检测到。所以我只需要更新 dectorparamenters 和问题中的示例就可以了。

编辑:因为我被问到这里更改的参数。我添加了这段代码,其中包含更改:

ImageFinder::ImageFinder() {
//initalize dictionary with markers....
dictionary = getPredefinedDictionary(cv::aruco::DICT_6X6_250);
dp = new DetectorParameters();
dp->minDistanceToBorder = 0;
dp->adaptiveThreshWinSizeMax = 400;
}

关于c++ - 当我直接解析 Mat 时,未检测到 OpenCv Aruco 标记,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37644331/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com