这几天做了一个指尖检测的测试程序,效果一般,主要是受环境影响比较大。目前我做的将手从复杂环境中提取出来的测试程序效果不是很好,受光影响较大,虽然我已经把RGB颜色空间转换了,将光强和色调隔离开来,但是还是有比较大的影响,后面会优化。
首先用肤色检测将手提取出来,当然更简单的方法就是直接用阈值二值化,在某些简单背景下还行。下面是用肤色检测提取出的手掌图。
我用cvErode(dst,dst,NULL,2)和cvDilate(dst,dst,NULL,1)进行开闭处理,可以去掉一些小孔,然后将上图进行边缘提取cvCanny(dst,thinImage,50,150,3)。提取了边缘后,将每一类边缘用一个数据结构储存起来。我将这些边缘存放在CvSeq* contour中。
边缘提取后的效果图