在simpleTest.c 的原始代码中摄像头只能识别一个标识卡,本例在simpletest.c上稍作修改,以识别多个标识。
下面是修改后的代码。
…………
…………
…………
char *patt_name[2]={"Data/patt.hiro","Data/patt.kanji"};//用数组存放2个标识的路径
int patt_id[2];//以识别两个标识卡为例
double patt_width[2]={80.0,80.0};//用数组存放2个标识的宽度
double patt_center[2][2] = {0.0,0.0,0.0,0.0};//用二维数组存放2个标识的中心点
double patt_trans[2][3][4];//用三维数组存放2个标识的"相摄像机对于标识卡的位置和姿态"
…………
…………
…………
static void draw(int id);//根据标示卡的id绘制模型
…………
…………
…………
static void mainLoop(void)
{
…………
…………
…………
int i, j, k[2]={-1,-1};//此处将k也改为数组
…………
…………
…………
…………
…………
…………
/* check for object visibility */
//k = -1;
for( j = 0; j < marker_num; j++ ) {
for(i=0;i<2;i++){
if( patt_id[i] == marker_info[j].id ) {
if( k[i] == -1 ) k[i] = j;
else if( marker_info[k[i]].cf < marker_info[j].cf ) k[i] = j;
}