哪种方法最适合于手势识别的interet区域的查找



我正在测试几种在手势中查找感兴趣区域的方法。例如,在opencv中,我发现了一些方法,如camshift(用于跟踪感兴趣的对象),一些背景提取方法(MoG、MoG2等),这些方法专门用于视频中从前景中减去背景,当我们在具有复杂背景的视频中用手作为对象时,也可以使用。以及可以用于静止状态下的手姿势的GrabCut和反投影方法。轮廓、边缘检测或皮肤方法是用于在图像或视频中检测手的一些其他方法。最后,我发现haar级联也可以使用。我想知道,考虑到我使用的是背景复杂的图像,从这个阶段开始,哪种算法是最好的选择。一些算法,如Grabcut或反向投影是好的,但最重要的问题是,我应该手动指定一些区域作为前景或背景,但这不是它应该的。在选择了roi的方法后,通常手势识别中最重要的特征是什么?对于提取特征,你建议采用哪种方法?它可以很好地与svm、knn等通用分类器一起对指定的图像进行分类。

感谢大家慢慢来

您可以从基于HSV的皮肤颜色过滤开始,以隔离图像中的皮肤颜色对象。。。在大多数情况下,这将构成你的脸和手掌。然后可以使用人脸检测进行隔离,然后消除人脸斑点。提取手掌后,可以简化手掌轮廓(在OpenCV中检查approxPolyDP),并计算手掌轮廓中凸起缺陷的数量。由于您还没有指定正在使用哪种编程语言,因此这里有一个python代码可以让您从皮肤检测开始:

import cv2
def nothing(x): #needed for createTrackbar to work in python.
    pass    
cap = cv2.VideoCapture(0)
cv2.namedWindow('temp')
cv2.createTrackbar('bl', 'temp', 0, 255, nothing)
cv2.createTrackbar('gl', 'temp', 0, 255, nothing)
cv2.createTrackbar('rl', 'temp', 0, 255, nothing)
cv2.createTrackbar('bh', 'temp', 255, 255, nothing)
cv2.createTrackbar('gh', 'temp', 255, 255, nothing)
cv2.createTrackbar('rh', 'temp', 255, 255, nothing)
while True:
        ret,img=cap.read()  #Read from source
        hsv=cv2.cvtColor(img,cv2.COLOR_BGR2HSV)
        bl_temp=cv2.getTrackbarPos('bl', 'temp')
        gl_temp=cv2.getTrackbarPos('gl', 'temp')
        rl_temp=cv2.getTrackbarPos('rl', 'temp')
        bh_temp=cv2.getTrackbarPos('bh', 'temp')
        gh_temp=cv2.getTrackbarPos('gh', 'temp')
        rh_temp=cv2.getTrackbarPos('rh', 'temp')
        thresh=cv2.inRange(hsv,(bl_temp,gl_temp,rl_temp),(bh_temp,gh_temp,rh_temp))
        if(cv2.waitKey(10) & 0xFF == ord('b')):
          break #break when b is pressed 
        cv2.imshow('Video', img)
        cv2.imshow('thresh', thresh)

最新更新