OpenCV python中的手势

slhcrj9b  于 2022-12-13  发布在  Python
关注(0)|答案(1)|浏览(128)

本文尝试用OpenCV库实现手语翻译器,首先需要检测手势,所以基本上是通过将RGB颜色空间转换为YCbCr颜色空间,然后对肤色范围进行阈值化来实现手势的检测。

ycc = cv2.cvtColor(img , cv2.COLOR_BGR2YCR_CB)

min_ycc = np.array([0,133,85], np.uint8)
max_ycc = np.array([255,170,125], np.uint8 )
skin  = cv2.inRange(ycc, min_ycc, max_ycc)

opening = cv2.morphologyEx(skin, cv2.MORPH_OPEN, np.ones((5,5), np.uint8), iterations=3)
sure_bg = cv2.dilate(opening,np.ones((3,3),np.uint8), iterations=2)

_,contours,_ = cv2.findContours(sure_bg, cv2.RETR_LIST,cv2.CHAIN_APPROX_NONE)

该代码对于低细节背景工作良好,但是如果我们具有包括接近皮肤颜色的细节背景,则具有一些噪声。
我唯一关心的是如何确定哪个轮廓是手的轮廓。我尝试了最大轮廓,但结果不是很准确。

4ioopgfo

4ioopgfo1#

可以通过腐 eclipse 和膨胀(形态学操作)去除背景噪声,然后设置轮廓面积的阈值(area=cv2.contourArea(cnt)),滤除手部轮廓,另一种方法是使用直方图反投影。

相关问题