一.工具
artoolkit5、vs2017
二.程式**
#ifdef _win32
#include
#endif
#include
#include
#include
#include
#else
#include
#include
#endif
#include
#include
#include
#include
//// 相機配置
//#ifdef _win32
char *vconf = "data\\wdm_camera_flipv.xml";//相機引數
#else
char *vconf = "";
#endif
int xsize, ysize;
int thresh = 100;
int count = 0;
char *cparam_name = "data/camera_para.dat";
arparam cparam;
char *patt_name = "data/patt.hiro";
int patt_id;
double patt_width = 80.0;
double patt_center[2] = ;
double patt_trans[3][4];
static
void init(void);
static
void cleanup(void);
static
void keyevent( unsigned
char key, int x, int y);
static
void mainloop(void);
static
void draw( void );
int main(int argc, char **argv)//主函式
static
void keyevent( unsigned
char key, int x, int y)//鍵盤事件
}/* 主迴圈 */
static
void mainloop(void)
if( count == 0 ) arutiltimerreset();
count++;
argdrawmode2d();
argdispimage( dataptr, 0,0 );
/* */
if( ardetectmarker(dataptr, thresh, &marker_info, &marker_num) < 0 )
arvideocapnext();
/* 檢查是否存在標示卡 */
k = -1;
for( j = 0; j < marker_num; j++ )
}if( k == -1 )
/* 得到轉換矩陣*/
argettransmat(&marker_info[k], patt_center, patt_width, patt_trans);
draw();
argswapbuffers();
}static
void init( void )//初始化函式
arparamchangesize( &wparam, xsize, ysize, &cparam );
arinitcparam( &cparam );
printf("*** 相機引數 ***\n");
arparamdisp( &cparam );
if( (patt_id=arloadpatt(patt_name)) < 0 )
/*開啟影象視窗 */
arginit( &cparam, 1.0, 0, 0, 0, 0 );
}/* 重新整理函式 */
static
void cleanup(void)
static
void draw( void )//畫虛擬影象
; glfloat mat_flash = ;
glfloat mat_flash_shiny = ;
glfloat light_position = ;
glfloat ambi = ;
glfloat lightzerocolor = ;
argdrawmode3d();
argdraw3dcamera( 0, 0 );
glcleardepth( 1.0 );
glclear(gl_depth_buffer_bit);
glenable(gl_depth_test);
gldepthfunc(gl_lequal);
/* 載入相機裝換矩陣 */
argconvglpara(patt_trans, gl_para);
glmatrixmode(gl_modelview);
glloadmatrixd( gl_para );
glenable(gl_lighting);
glenable(gl_light0);
gllightfv(gl_light0, gl_position, light_position);
gllightfv(gl_light0, gl_ambient, ambi);
gllightfv(gl_light0, gl_diffuse, lightzerocolor);
glmaterialfv(gl_front, gl_specular, mat_flash);
glmaterialfv(gl_front, gl_shininess, mat_flash_shiny);
glmaterialfv(gl_front, gl_ambient, mat_ambient);
glmatrixmode(gl_modelview);
gltranslatef( 0.0, 0.0, 25.0 );
glutsolidcube(50.0);
gldisable( gl_lighting );
gldisable( gl_depth_test );
}
三.編譯並執行
執行結果,如圖:
四.結果分析
由執行結果可以看出,環境的基本配置應該沒出現問題,不然通過不了編譯。但最終攝像機呼叫出現問題,即攝像機打不開。在網上查了一些資料,說是需要找到本機攝像機的裝置號。
五.說明
程式**大部分是案例,只改動了小部分。注釋是通過自己的理解加上去的。關於artoolkit5的環境配置,學了好長一段時間,對一些應用程式的環境配置熟悉了不少。
ArToolKit學習小結2
1.學習過程中遇到的一些小概念 1 巨集定義 巨集定義 就是一種批量處理的稱謂。根據一系列預定義的規則替換一定的文字模式。編譯器遇到巨集時會自動進行這一模式的替換。如 define view scalefactor 1.0 2 位深度 位深度 就是記錄數字影象的顏色時用到的記錄單位。用位來記錄每乙個...
plsql程式案例
瀑布模型 統計每年入職的員工人數 sql語句 select to char hiredate,yyyy from emp 游標 迴圈 退出條件 notfound 變數 1.初始值 2.如何得到 每年入職的員工人數 count80 number 0 count81 number 0 count82 n...
AR實驗室 ARToolKit之概述篇
我從去年就開始對ar augmented reality 技術比較關注,但是去年ar行業一直處於偶爾發聲的狀態,絲毫沒有其 異姓同名 的兄弟vr virtual reality 火爆。至於mr mixed reality 更像是google glass事情之後對ar的洗白。但是今年ar行業出了件大事...