OpenCV检测手部和比较图像

OpenCV detect hand and comparison images

本文关键字:比较 图像 手部 检测 OpenCV      更新时间:2023-10-16

我的应用程序的目的是拍摄照片手(手势)并将其与数据库中的图片进行比较。我使用的第一个选项是对图像进行背景减法:

http://docs.opencv.org/trunk/doc/tutorials/video/background_subtraction/background_subtraction.html。

解决方案有效,但有时,取决于第一张图片没有正确切割手。

第二种选择是检测肤色:http://bytefish.de/blog/opencv/skin_color_thresholding/

还是使用基于 xml 文件的手部检测更好?为了比较图像,我想使用这种方法:http://docs.opencv.org/doc/tutorials/imgproc/histograms/histogram_comparison/histogram_comparison.html

让我提醒您,我说的是比较它们作为手势的图像。我还读到制作直方图的可能性不仅仅是整个图像仅在照片的主题上,然后数据更可靠,但不知道如何做。

我想将手势作为单个图像进行比较,我的意思不是序列。 1张图片与基线进行比较。手势检测是为了启用某人,例如。会响,现在我会有例如。5秒拍照并将它们与底座进行比较,因为我不确定是否出现在手的镜头中。除非有其他解决方案。

最终,它是对两个图像的比较,其中会有一些手势。

如果您的目标是执行手势识别,则应考虑到手势是图像序列。因此,如果你想比较手势,你必须找到一种"智能"的方式来比较整个序列,而不是单个图像,因为一帧可以属于不同的手势。

最先进的手势识别方法涉及提取两个连续帧之间的光流,然后计算光流直方图(HOF)。计算视频序列中所有帧对的直方图后,您可以使用不同的策略来比较手势:

  • 您可以连接序列中的所有 HOF,然后执行直方图交集以比较两个序列
  • 您可以使用词袋范例创建 HOF 的表示形式

这里有一些关于这个策略的指示:

  • 光流
  • 您可以查看这篇文章以提取 HOF:"定向光流和比奈-柯西核的直方图用于识别人类行为的非线性动力系统"[词袋]
  • 词袋

但是,如果您的应用程序只需要两个图像之间的比较,我建议为每个图像提取梯度直方图(HOG),然后将它们与直方图交集度量进行比较,或者再次使用词袋范式(如果您正在寻找图像的更高级别表示形式,则更好)。HOG在OpenCv库链接中提供