我目前正在尝试使用OpenCV 2.3和C++来检测一只手(戴着绿色手套)并区分不同的手势。寻找凸缺陷?在OpenCV 2.3中,C++与MS Visual Studio2010
在此刻,我的下一步是获取手的特定特征(凸起缺陷)。
到目前为止,我已经在我的过程中使用这些功能:
mixChannels(); //to subtract non-green channels from green.
threshold(); //to convert to binary
erode(); dialate(); //to get rid of any excess noise
findContours(); //to find contours of course
这些都出色的工作,我已经通过使用drawContours()
能够输出findContours()
。
下一步,这是我在哪里,正在使用convexHull()
,它也在OpenCV 2.3中工作。但是,我还没有找到convexHull()
的矢量结果的外观(它们包含哪些功能)。
但是这是棘手的部分。
我发现OpenCV的旧版本(使用c使用IplImage
),有一个整洁的小函数,称为cvConvexityDefects()
,它可以给凸包上的一组缺陷。这些都是我需要的,但似乎没有OpenCV 2.3的这种功能,我也没有看到如何使用旧的语法来获得这些结果。
这是link to Open CV documentation on cvConvextDefects
。
我要求的,是一个类似的OpenCV 2.3函数,或者是一个用于查找这些缺陷的代码或算法的自写代码。或者使用旧的2.1语法作为向量结果或类似的方法。
(我知道我可以使用其他功能,矩形边框,并装圈子,但我敢肯定,凸状缺陷产生的最区分功能。)
解决方案 - 我结束了使用C++包装from this post 唯一不适用于此包装的东西似乎是缺陷向量的韭菜,应该很容易解决。
下一步是从这些缺陷中获取一些有用的数据。 (乍看之下,数据看起来似乎是凸形或轮廓上的单点或者这些的数量,我起初预计会有一组两点,或者一个点和一个长度,它似乎不是。如果我用这个打砖墙,我会再发一篇文章)
OpenCV的2.3.1仍然有此方法,以便寻找它时,你一定做错了什么。你可以在文档中看到自己:http://opencv.itseez.com/modules/imgproc/doc/structural_analysis_and_shape_descriptors.html?highlight=defects# – Adrian
我已经搜索了很多。我确实认为_vasile_提供的答案将解决我的问题。 (我已经在OpenCV文档的森林中散步了很长一段时间,但感谢提出这个问题) – Sonaten