OpenCV检测手部和比较图像
OpenCV detect hand and comparison images
我的应用程序的目的是拍摄照片手(手势)并将其与数据库中的图片进行比较。我使用的第一个选项是对图像进行背景减法:
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库链接中提供
- Base64 图像比较
- 比较BGR图像是否完全相同
- 如何使用mingw64 gcc/g 比较两个图像
- 如何比较QT中的两个RGB图像
- TBB免费图像lambda阵列比较错误
- 访问图像像素;MatIterator_<> 和 Mat::at 运算符的比较
- MPI BMP 图像比较更高效
- C++图像比较每个块中的平均位数
- Opencv比较图像
- OpenCV检测手部和比较图像
- OpenCV代码将存储在列表中的描述符与新的图像描述符进行比较
- 如何在 opencv 中将图像与数据库进行比较C++
- 使用直方图比较 c++ 匹配图像
- OpenCV图像调整大小与matlab的比较
- 使用C++和OpenCV进行图像比较的方法
- C# 中的 pHash 图像比较实现
- 如何使用 OpenCV 比较存储在文件中的两个图像
- 如何比较比较两个图像的轮廓
- c++ /SIFT/SQL -如果有一种方法可以有效地比较图像的SIFT描述符与SQL数据库中的SIFT描述符
- 比较图像的相似性