我的上篇博客《基于标记的AR的OpenCV实现》实现的是单幅图片的标记检测和增强现实,稍微改动了程序实现了摄像头视频流图像的动态检测和实时增强,经测试,
实时性不错,在标记不被遮挡的情况下,绘制的虚拟模型和实时与检测标记结合,但标记只要有被遮挡一少部分,标记就检测失败。
以下讲下程序修改部分。
1:show函数并没有修改,但还是讲一下程序流程,首先在main()函数中调用show()函数后,在show()函数中,首先完成一些显示参数的初始化,这部分只需执行一次即可,然后将图像数据读入pixeldata中,之后通过glutDisplayFunc(&display)调用display()函数进行显示,但请注意,display()函数只会执行一次。glutMainLoop进入GLUT事件处理循环。在一个GLUT程序中,这个例程被调用一次 。一旦被调用,这个程序将永远不会返回 。它将调用必要的任何已注册的回调。
int show(const char* filename,int argc, char** argv,Mat_<float>& cameraMatrix, vector<Marker>& detectedMarkers)
{
//打开文件
FILE* pfile=fopen(filename,"rb");
if(pfile == 0) exit(0);
//读取图像大小
fseek(pfile,0x0012,SEEK_SET);
fread(&imagewidth,sizeof(imagewidth),1,pfile);
fread(&imageheight,siz