Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
对象跟踪openCV、问题、建议?_Opencv_Colors_Tracking_Face Detection - Fatal编程技术网

对象跟踪openCV、问题、建议?

对象跟踪openCV、问题、建议?,opencv,colors,tracking,face-detection,Opencv,Colors,Tracking,Face Detection,简介:增强现实项目 目标:在某人的头部加载3D发型模板 因此,我使用OpenCV来跟踪人的面部,然后我必须跟踪用户的cap(我们假设用户有一个cap,我们可以决定一个地标或我们需要在cap上检测的所有内容)。一旦我检测到地标,我必须获得地标的坐标,然后将其发送到3D引擎以启动/更新3D对象 因此,为了准确地检测cap的地标,我首先测试了几种方法: cvFindChessBoardCorner。。。在平面图面上非常有效,但在cap() 颜色检测()。。。效率不高。如果亮度改变,颜色也会改变 我

简介:增强现实项目

目标:在某人的头部加载3D发型模板

因此,我使用OpenCV来跟踪人的面部,然后我必须跟踪用户的cap(我们假设用户有一个cap,我们可以决定一个地标或我们需要在cap上检测的所有内容)。一旦我检测到地标,我必须获得地标的坐标,然后将其发送到3D引擎以启动/更新3D对象

因此,为了准确地检测cap的地标,我首先测试了几种方法:

  • cvFindChessBoardCorner。。。在平面图面上非常有效,但在cap()

  • 颜色检测()。。。效率不高。如果亮度改变,颜色也会改变

我今天来找你是想和你一起考虑这件事。我的帽子需要特别的标志吗?(如果是,哪一个?如果不是,我怎么办?) 将颜色检测和形状检测混为一谈是个好主意吗

。。。。我走对了吗^^ 我非常感谢关于使用cap来针对用户头部的任何建议,以及我必须在OpenCV库中使用的不同功能

对不起,如果我的英语不完美的话


多谢各位

我想到的一个快速方法是将这两种方法结合起来

使用直方图和均值偏移进行颜色跟踪

下面是使用直方图的另一种颜色检测方法:

这个想法是: 对于已知颜色的上限,比如亮绿色/蓝色(就像您在图像抠图屏幕上看到的那种颜色),您可以仅使用色调和饱和度颜色通道预先计算直方图。我们故意排除亮度通道,使其对灯光变化更为鲁棒。现在,使用直方图,您可以创建一个反投影贴图,即在图像中每个像素处都有一个概率值的遮罩,该概率值指示存在的颜色是帽的颜色的概率

现在,在获得概率图之后,您可以在此概率图(而不是图像)上运行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++的优点展开一场火焰战。 希望这有帮助