对象跟踪openCV、问题、建议?
简介:增强现实项目 目标:在某人的头部加载3D发型模板 因此,我使用OpenCV来跟踪人的面部,然后我必须跟踪用户的cap(我们假设用户有一个cap,我们可以决定一个地标或我们需要在cap上检测的所有内容)。一旦我检测到地标,我必须获得地标的坐标,然后将其发送到3D引擎以启动/更新3D对象 因此,为了准确地检测cap的地标,我首先测试了几种方法:对象跟踪openCV、问题、建议?,opencv,colors,tracking,face-detection,Opencv,Colors,Tracking,Face Detection,简介:增强现实项目 目标:在某人的头部加载3D发型模板 因此,我使用OpenCV来跟踪人的面部,然后我必须跟踪用户的cap(我们假设用户有一个cap,我们可以决定一个地标或我们需要在cap上检测的所有内容)。一旦我检测到地标,我必须获得地标的坐标,然后将其发送到3D引擎以启动/更新3D对象 因此,为了准确地检测cap的地标,我首先测试了几种方法: cvFindChessBoardCorner。。。在平面图面上非常有效,但在cap() 颜色检测()。。。效率不高。如果亮度改变,颜色也会改变 我
- cvFindChessBoardCorner。。。在平面图面上非常有效,但在cap()
- 颜色检测()。。。效率不高。如果亮度改变,颜色也会改变
多谢各位 我想到的一个快速方法是将这两种方法结合起来 使用直方图和均值偏移进行颜色跟踪 下面是使用直方图的另一种颜色检测方法: 这个想法是: 对于已知颜色的上限,比如亮绿色/蓝色(就像您在图像抠图屏幕上看到的那种颜色),您可以仅使用色调和饱和度颜色通道预先计算直方图。我们故意排除亮度通道,使其对灯光变化更为鲁棒。现在,使用直方图,您可以创建一个反投影贴图,即在图像中每个像素处都有一个概率值的遮罩,该概率值指示存在的颜色是帽的颜色的概率 现在,在获得概率图之后,您可以在此概率图(而不是图像)上运行or算法(在OpenCV中可用),初始窗口位于使用OpenCV算法检测到的人脸上方的某个位置。该窗口最终将以概率分布模式结束,即cap 有关详细信息,请参见我在上面给出的有关强健手部检测的链接。更多细节,你应该考虑获得官方OpenCV图书或者从当地图书馆借阅。关于使用meanshift和camshift跟踪对象有一个非常好的章节。或者,只需使用meashift/camshift上的任何查询搜索web即可进行对象跟踪 检测方形/圆形以获得头部方向 此外,如果您希望进一步确认该最终位置,您可以在盖子前面添加4个小正方形/圆圈,并使用OpenCV的内置算法仅在该感兴趣区域(ROI)中检测它们。这有点像检测二维码中的方块。这一步还提供了有关帽的方向以及头部的信息,这在渲染头发时可能很有用。例如,定位两个相邻的正方形/圆圈后,可以计算它们与水平/垂直线之间的角度 您可以使用OpenCV中的标准角点检测器等检测正方形/角点。 对于圆,可以尝试使用HoughCircle算法: 加快速度 广泛使用利益区域(ROI) 为了加快速度,您应该尽可能经常地在图像的小区域(ROI)(也是概率图)上运行算法。您可以从OpenCV图像中提取ROI,这些图像本身就是图像,并在它们上运行OpenCV算法,就像在整个图像上运行它们一样。例如,您可以计算检测到的人脸周围ROI的概率图。类似地,meanshift/camshift算法应该只在这个较小的地图上运行。同样,对于检测正方形或圆形的附加步骤。详细信息可以在OpenCV手册中找到,也可以在线快速搜索 使用TBB和CUDA编译OpenCV 通过打开TBB(线程构建块)和CUDA支持编译OpenCV库,许多OpenCV算法可以实现显著的加速,而程序员无需做任何额外的工作。特别是,OpenCV(Viola Jones)中的人脸检测算法的运行速度将提高两倍 只有在安装了TBB和CUDA的软件包后,才能打开这些选项 待定: CUDA: 然后从源代码编译OpenCV: 最后,我不确定您是否正在使用OpenCV的“C版本”。除非严格必要(对于兼容性问题等),我建议使用OpenCV的C++接口,因为它更方便(至少从我个人的经验)。现在让我先陈述一下我不想让这个声明对C VC++的优点展开一场火焰战。 希望这有帮助