文章目录
0 前言
🔥 优质竞赛项目系列,今天要分享的是
🚩 深度学习图像识别手势检测识别系统
该项目较为新颖,适合作为竞赛课题方向,学长非常推荐!
🥇学长这里给一个题目综合评分(每项满分5分)
- 难度系数:3分
- 工作量:3分
- 创新点:4分
🧿 更多资料, 项目分享:
https://gitee.com/dancheng-senior/postgraduate
1 实现效果
废话不多说,先看看学长实现的效果吧
2 技术原理
2.1 手部检测
主流的手势分割方法主要分为静态手势分割和动态手势分割两大类方法。
-
静态手势分割方法: 单张图片利用手和背景的差异进行分割,
-
动态手势分割方法: 利用了视频帧序列的信息来分割。
2.1.1 基于肤色空间的手势检测方法
肤色是手和其他背景最明显的区分特征,手的颜色范围较统一并且有聚类性,基于肤色的分割方法还有处理速度快,对旋转、局部遮挡、姿势变换具有不变性,因此利用不同的颜色空间来进行手势分割是现在最常用的方法。
肤色分割的方法主要有以下几种:基于参数、非参数的显式肤色聚类方法。参数模型使用高斯颜色分布,非参数模型则是从训练数据中获得肤色直方图来对肤色区间进行估计。肤色聚类显式地在某个特定的颜色空间中定义了肤色的边界,广义上看是一种静态的肤色滤波器,如Khan根据检测到的脸部提出了一种自适应的肤色模型。
肤色是一种低级的特征,对计算的消耗很少,感知上均匀的颜色空间如CIELAB,CIELUV等已经被用于进行肤色检测。正交的颜色空间如,YCbCr,YCgCr,YIQ,YUV等也被用与肤色分割,如Julilian等使用YCrCb颜色空间,利用其中的CrCb分量来建立高斯模型进行分割。使用肤色分割的问题是误检率非常高,所以需要通过颜色校正,图像归一化等操作来降低外界的干扰,提高分割的准确率。
基于YCrCb颜色空间Cr, Cb范围筛选法手部检测,实现代码如下:
# 肤色检测之二: YCrCb中 140<=Cr<=175 100<=Cb<=120
img = cv2.imread(imname, cv2.IMREAD_COLOR)
ycrcb = cv2.cvtColor(img, cv2.COLOR_BGR2YCrCb) # 把图像转换到YUV色域
(y, cr, cb) = cv2.split(ycrcb) # 图像分割, 分别获取y, cr, br通道分量图像
skin2 = np.zeros(cr.shape, dtype=np.uint8) # 根据源图像的大小创建一个全0的矩阵,用于保存图像数据
(x, y) = cr.shape # 获取源图像数据的长和宽
# 遍历图像, 判断Cr和Br通道的数值, 如果在指定范围中, 则置把新图像的点设为255,否则设为0
for i in range(0, x):
for j in range(0, y):
if (cr[i][j] >