ARToolkit:视频中未检测到任何标记

时间:2018-02-16 15:06:40

标签: c++ c augmented-reality markers artoolkit

我正在尝试使用ARtoolkit来检测来自多个视频的标记。对于每个视频源,我使用以下代码初始化arHandle:

    ARParam         cparam;
    AR_PIXEL_FORMAT pixFormat = AR_PIXEL_FORMAT_RGB;

    cparam.xsize = 1000;
    cparam.ysize = 800; 
    cparam.dist_function_version = 1

    for(int i = 0; i < 4; ++i){
        cparam.dist_factor[i] = calib.distParams[i];
    }
    for(int i = 0; i < 3; ++i){
        for(int j = 0; j < 3; ++j){
            cparam.mat[i][j] = calib.K(i,j);
        }
    }
    for(int i = 0; i < 3; i ++){
        cparam.mat[i][3] = 0.0f;
    }

    arParamDisp( &cparam );

    if ((gCparamLT = arParamLTCreate(&cparam, AR_PARAM_LT_DEFAULT_OFFSET)) == NULL) {
        ARLOGe("Error: arParamLTCreate.\n");
        exit(-1);
    }
    if( (arHandle=arCreateHandle(gCparamLT)) == NULL ) {
        ARLOGe("Error: arCreateHandle.\n");
        exit(0);
    }
    if( arSetPixelFormat(arHandle, pixFormat) < 0 ) {
        ARLOGe("Error: arSetPixelFormat.\n");
        exit(0);
    }
    if( (arPattHandle=arPattCreateHandle()) == NULL ) {
        ARLOGe("Error: arPattCreateHandle.\n");
        exit(0);
    }

    patt_id.push_back(arPattLoad(arPattHandle, "hiro.patt"));

    arPattAttach(arHandle, arPattHandle); 

其中计算每个摄像机的校准信息(校准)。创建句柄并加载模式而不会出错。

然后我尝试检测&#34; hiro&#34;每个视频源中的标记使用:

    arDetectMarker(arHandle, img.data);

其中img是cv :: Mat,用RGB表示视频的每一帧。它的opencv类型是CV_8UC3。

但是,对于每个摄像头,我总是会发现markerNum = arGetMarkerNum(arHandle)= 0。

有谁知道为什么我会遇到这个问题?

0 个答案:

没有答案