这些天来,我正在使用 ARToolKit,我面临着从静态图像创建 AR Marker 的必要性。因此,正如旧的 ARToolKit 时事通讯中所建议的那样,我开始编写自己的视频函数,当我执行 mk_patt.exe 时应该替换标准的 Win32DirectShow 函数。我的视频功能具有以下结构:
int arVideoOpen( char *config ) {
return 0;
}
int arVideoClose( void ){
return 0;
}
int arVideoDispOption( void ){
return 0;
}
int arVideoInqSize( int *x, int *y ){
*x = xsize;
*y = ysize;
}
ARUint8 *arVideoGetImage( void )
{
FILE *pFile;
unsigned long Size;
unsigned char *buffer;
size_t result;
pFile = fopen("hhgf.bmp","rb");
if(pFile==0){
printf("Error!\n");
}
else{
fseek(pFile, 0, SEEK_END);
Size = ftell( pFile );
printf("Size: %d \n",Size);
fseek(pFile, 0, SEEK_SET);
buffer = (unsigned char*) malloc (Size);
if (buffer == NULL) {fputs ("Memory error",stderr); exit (2);}
result = fread (buffer, Size,1, pFile);
if (result != Size) {fputs ("Reading error",stderr); }
return (ARUint8 *) buffer;
}
}
int arVideoCapStart( void ){
return 0;
}
int arVideoCapStop( void ) {
return 0;
}
int arVideoCapNext( void )
{
return 0;
}
焦点方法是arVideoGetImage,它应该返回我的图像数据。我对 C 语言不是很熟悉,所以我在该方法中添加了一些我在网上找到的简单代码,但是当我运行 mk_patt.exe 时,它崩溃了。我需要一些关于如何编写代码的帮助,或者这是否是达到我的目的的正确方法。