我的应用程序的目的是拍摄照片(手势)并将其与数据库中的图片进行比较。我使用的第一个选项是图像上的背景减法:
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秒钟拍照并将它们与底座进行比较,因为我不确定是否出现在手的镜头中。除非有另一种解决方案。
最终,它是两个图像的比较,其中会有一些手势。
答案 0 :(得分:1)
如果您的目标是执行手势识别,则应考虑手势是图像序列。 因此,如果你想比较手势,你必须找到一个" smart"比较整个序列而不是单个图像的方法,因为一个帧可以属于不同的手势。
用于手势识别的现有技术方法涉及在两个连续帧之间提取光流,然后计算光流(HOF)的直方图。计算了视频序列中所有帧对的直方图后,您可以使用不同的策略来比较手势:这里有一些指向这些策略的指示:
但是,如果您的应用只需要两个图像之间的比较,我建议为每个图像提取梯度直方图(HOG),然后将它们与直方图交点度量进行比较,或者再次,使用Bag of words范例(如果您正在寻找更高级别的图像表示,那就更好了)。 HOG在OpenCv库link
中提供