我正在使用OpenCV库来检测手部的图像处理项目。我在iplimage
中初始化了图片,对其进行了着色,然后使用cvCvtColor(imageHand,imageHand,CV_BGR2HSV );
将其转换为HSV
我不知道有效的算法,所以这是我的问题。请检查我的代码:
for( int row = 0; row < imageHand->height; row++ )
{
for ( int col = 0; col < imageHand->width; col++ )
{
h =(imageHand->imageData[imageHand->widthStep * row + col * 3]) ;
s = (imageHand->imageData[imageHand->widthStep * row + col * 3 + 1]);
v = (imageHand->imageData[imageHand->widthStep * row + col * 3 + 2]);
if( h>85)
{
imageHand->imageData[imageHand->widthStep * row + col * 3 ] = 0 ;
imageHand->imageData[imageHand->widthStep * row + col * 3 + 1 ] =0 ;
imageHand->imageData[imageHand->widthStep * row + col * 3 + 2 ] = 0 ;
}
else
{
imageHand->imageData[imageHand->widthStep * row + col * 3 ] = 255 ;
imageHand->imageData[imageHand->widthStep * row + col * 3 + 1 ] = 255 ;
imageHand->imageData[imageHand->widthStep * row + col * 3 + 2 ] = 255 ;
}
}
}
我认为搜索到的h
的范围是> 85
!?
如果您知道更好的算法,请指导我。
答案 0 :(得分:6)
如果您查看此网站Hand detection using opencv,您会发现与您正在使用的内容类似的algorithm。我会说,检测手的最简单方法是使用颜色(即皮肤检测)。我肯定会建议先查看该网站提供的算法。还有另一部分也会用于手势识别,如果这是您将需要处理的最终问题。
其他可能性包括:
答案 1 :(得分:2)
正如Ancallan上面提到hand detection using opencv,我想补充一些关于手势检测主题的更多信息。在该帖子中,作者使用了一种肤色分割方法,在特定情况下取得了很好的效果。
使用openCV更新了一个新的手势检测帖子,其中作者使用了a HAAR classifier to detect closed palm,结果比前者更加健壮。但需要指出的是,检测对象在某种程度上受到限制,因为一个分类器仅适用于一个手势。