ARtoolkit 程式案例

2021-08-10 15:49:59 字數 3631 閱讀 6025

一.工具

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行業出了件大事...