我正在尝试使用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。
有谁知道为什么我会遇到这个问题?