寻找凸缺陷?在OpenCV 2.3中,c++;微软视觉研究2010 我目前尝试使用OpenCV 2.3和C++来检测一只手(戴着绿色手套),并区分不同的手势。

寻找凸缺陷?在OpenCV 2.3中,c++;微软视觉研究2010 我目前尝试使用OpenCV 2.3和C++来检测一只手(戴着绿色手套),并区分不同的手势。,c++,opencv,convex-hull,C++,Opencv,Convex Hull,此时此刻,我的下一步是获取手的特定特征(凸面缺陷) 到目前为止,我已经在流程中使用了这些函数: 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 这些工具工作

此时此刻,我的下一步是获取手的特定特征(凸面缺陷)

到目前为止,我已经在流程中使用了这些函数:

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()

下一步,这就是我要做的,就是使用同样适用于OpenCV 2.3的
convexHull()
。但是,我还没有找到
convexHull()
的向量结果的实际外观(它们包含哪些特性)

但这就是棘手的部分

我发现较旧版本的OpenCV(使用c,它使用
IplImage
),有一个名为
cvconverxitydefects()
的简洁的小函数,可以在凸包上给出一组缺陷。这些是我所需要的,但是OpenCV 2.3似乎没有这样的函数,我不知道如何使用旧语法来获得这些结果

这是一个例子

我想要的是一个类似的OpenCV 2.3函数,或者是一段用于查找这些缺陷的自编代码或算法。或者一种方法,对向量结果或类似的东西使用旧的2.1语法

(我知道我可以使用其他特征、矩形边界框和拟合圆。但我确信凸面缺陷会产生最明显的特征。)

解决方案-我最后使用了一个C++包装器 对于这个包装器唯一不起作用的似乎是缺陷向量的韭葱,这应该很容易解决


下一步是从这些缺陷中获取一些可用数据。(乍一看,数据似乎是凸壳上的单点或轮廓或这些计数。我起初预期有两个点,或者一个点和一个长度,这似乎不是。如果我用这个来撞‘砖墙’,我会再做一个帖子)< /P> < P>新的C++接口没有(还)。支持C中的所有函数,反之亦然(cpp中并非所有函数都支持C)。原因是多方面的,但好消息是,您可以轻松地使用您想要的任何函数。例如,这里您必须将轮廓转换为序列(CvSeq)并将其发送到函数

此外,FindContours方法是cvFindContours的包装器。你可以叫它

cvFindContours((IplImage*)matImage, ...);
然后直接使用结果

另一种方法是在CVRUX中创建一个干净的C++包装器,并提交给OpenCV。在findContours源代码中,您将找到一些帮助(相反的转换)

<>我想把我的VuleSu壳向量从C++语法转换成你提到的序列,但是我不知道从哪里开始。你能解释一下吗

看看这个问题,我相信它会进入其中


OpenCV 2.3.1仍然有此方法,因此您在查找它时一定做错了什么。您可以在文档中看到:我已经搜索了很多。我确实认为瓦西里提供的答案将解决我的问题。(我已经在OpenCV文档的森林里走了很长一段时间了,但是谢谢你提出这个问题)谢谢你的投入,我相信这可以帮助我进行检测。当我解决这个问题时,我会加上“已回答”。到目前为止,我正在努力使这一点正确。我只使用过c语法很少几次,而且我一开始并不热衷于编程。最初的方法是从我的二进制图像开始,用c语法找到轮廓,但是我似乎缺乏一些知识,OpenCV.WillowGarage文档网站已经关闭了一天的大部分时间。我想尝试把我的VuleSu壳向量从C++语法转换成你提到的序列,但是我不知道从哪里开始。你能不能给我一些启示?我找到了ReaFaEsCotand在我的帖子中提到的包装。在Vasle的注释中,我提出了一个C++函数包,我来寻找你提到的这个帖子。但是谢谢你的努力。