-
2021-11-29 23:28:46
※说明:文章中出现的代码均非原创,仅作引用说明使用。
第一次写粗制滥造的屑博客,后续还会进行修改(如果能改的话)。
关于手势识别
概要
手势识别,即为向程序输入图形(图片、视频、实时录像等),通过程序识别人体皮肤颜色的方式,勾画出轮廓,从而实现手势识别的目的。
所以手势识别本质上是识别人体皮肤的颜色,将其与图像上其他事物区分开来。
以上截图是一段手势识别程序运行时的效果。
运行原理
这里利用Python、OpenCV进行处理。
首先是常规的操作,将图像(视频)输入至程序,之后方可进行处理。
import cv2 import numpy as np cap = cv2.VideoCapture(XXX)#XXX为0时读取摄像头,为"YYY.mp4"等文件名时读取文件
接着是皮肤检测,借物的代码没有做太多的分析,主要是将图形拆分出Y、Cr、Cb值,在整张图像中进行判断。判断皮肤范围后绘制轮廓。
def A(img): YCrCb = cv2.cvtColor(img, cv2.COLOR_BGR2YCR_CB) #转换至YCrCb空间 (y,cr,cb) = cv2.split(YCrCb) #拆分出Y,Cr,Cb值 cr1 = cv2.GaussianBlur(cr, (5,5), 0) _, skin = cv2.threshold(cr1, 0, 255, cv2.THRESH_BINARY + cv2.THRESH_OTSU) #Ostu处理 res = cv2.bitwise_and(img,img, mask = skin) return res def B(img): #binaryimg = cv2.Canny(Laplacian, 50, 200) #二值化,canny检测 h = cv2.findContours(img,cv2.RETR_EXTERNAL,cv2.CHAIN_APPROX_NONE) #寻找轮廓 contour = h[0] contour = sorted(contour, key = cv2.contourArea, reverse=True)#已轮廓区域面积进行排序 #contourmax = contour[0][:, 0, :]#保留区域面积最大的轮廓点坐标 bg = np.ones(dst.shape, np.uint8) *255#创建白色幕布 ret = cv2.drawContours(bg,contour[0],-1,(0,0,0),3) #绘制黑色轮廓 return ret
然后需要对输入的图形进行一定的处理,除了确定处理的范围之外,根据具体图像环境不同,需要对肤色进行判断。接着才能进行检测。
最后分析之后需要输出给人看,白色的底图和绘制的轮廓,可以体现出手势的样式。
>这么长串别人的代码,就不继续贴出来了吧(悲)
缺点
由于这串代码并未对“手的形状”进行识别,而只是单纯的识别肤色进行绘图,因此露脸的人脸等或会被绘入轮廓中。但若要对手本身进行识别,难度较大对新手不友好。通过识别肤色的方式可以较为简单地实现手势的识别,只要人体皮肤其他部位没有出镜即可。
关于目标检测
运行的图丢一个出来,坑先挖着(
更多相关内容 -
python实现手势识别的示例(入门)
2020-09-17 13:28:34主要介绍了python实现手势识别的示例(入门),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧 -
python实现手势识别
2020-12-21 11:53:33python实现手势识别(入门) 使用open-cv实现简单的手势识别。刚刚接触python不久,看到了很多有意思的项目,尤其时关于计算机视觉的。网上搜到了一些关于手势处理的实验,我在这儿简单的实现一下(PS:和那些大佬比... -
Python实现手势识别
2020-12-16 18:02:42自己在这个基础上做了一点修改补充后,可以实现手指指尖的检测,并且可以在windows系统下通过判断手指数目,来模拟键盘操作。下面直接上源程序,并做了详细注释,方便理解。 环境:python3.6+opencv3.4.0 代码... -
10分钟用python实现手势识别
2020-12-21 10:21:09python实现手势识别环境准备①百度获取SDK②所需的库流程步骤①开启摄像头功能②手势识别③语音播报成果展示源码效果视频 环境准备 ①... -
python实现手势识别的示例(入门).pdf
2020-11-23 09:30:17python实实现现手手势势识识别别的的示示例例 入入门门 这篇文章主要介绍了python实现手势识别的示例 入门文中通过示例代码介绍的非常详细对大家的学习或 者工作具有一定的 考学习价值需要的朋友们下面随着小编来... -
Python手势识别与控制源码
2019-02-19 01:50:37主要使用了OpenCV的视频采集, 图像色域转换, 颜色通道分割, 高斯滤波, OSTU自动阈值, 凸点检测, 边缘检测, 余弦定理计算手势等功能,实现手势识别与控制 -
Python之调用百度API实现手势识别
2021-05-27 19:36:19目录作者介绍一、注册登录百度智能云二、创建应用获取SDK2.1 进入百度智能云---人体分析2.2 创建手势识别应用2.3 获取SDK三、手势识别附源码 作者介绍 周新龙,男,西安工程大学电子信息学院,2019级研究生,张宏伟...1.作者介绍
周新龙,男,西安工程大学电子信息学院,2019级研究生,张宏伟人工智能课题组
研究方向:机器视觉与人工智能
电子邮件:402850713@qq.com2.实现过程
2.1注册登录百度智能云
百度智能云与百度旗下各款APP账号通用,大家无需另行注册!2.2进入百度智能云—人体分析
点击左侧产品服务→人工智能→人体分析。
2.3创建手势识别应用
进入人体分析概览后,点击创建应用。
应用名称进行填写,例如:手势识别
接口选择:人体分析
应用归属:个人
应用描述:例如个人学习使用
填写完毕后,点击立即创建。
就会跳转至创建完毕。
点击查看应用详情。2.4 获取SDK
查看应用详情就可以获取AppID、API Key、Secret Key等信息。3.结果及代码
3.1手势识别结果
支持的24类手势列表:拳头、OK、祈祷、作揖、作别、单手比心、点赞、Diss、我爱你、掌心向上、双手比心(3种)、数字(9种)、Rock、竖中指。
主要适用于3米以内的自拍、他人拍摄,1米内识别效果最佳,拍摄距离太远时,手部目标太小,无法准确定位和识别。
图片中有多个手势时,也能识别,但该情况下,单个手势的目标可能较小,且角度可能不好(例如存在倾斜、遮挡等),识别效果可能受影响。建议针对单个手势进行识别,效果最佳。
注:
1)上述24类以外的其他手势会划分到other类。
2)除识别手势外,若图像中检测到人脸,会同时返回人脸框位置。
3.2代码
pip install baidu-aip pip install opencv-python import cv2 from aip import AipBodyAnalysis from aip import AipSpeech from threading import Thread """ 你的 APPID AK SK """ APP_ID = 'xxxxx' API_KEY = 'xxxx' SECRET_KEY = 'xxxx' ''' 调用''' hand = {'One': '数字1', 'Five': '数字5', 'Fist': '拳头', 'Ok': 'OK', 'Prayer': '祈祷', 'Congratulation': '作揖', 'Honour': '作别', 'Heart_single': '比心心', 'Thumb_up': '点赞', 'Thumb_down': 'Diss', 'ILY': '我爱你', 'Palm_up': '掌心向上', 'Heart_1': '双手比心1', 'Heart_2': '双手比心2', 'Heart_3': '双手比心3', 'Two': '数字2', 'Three': '数字3', 'Four': '数字4', 'Six': '数字6', 'Seven': '数字7', 'Eight': '数字8', 'Nine': '数字9', 'Rock': 'Rock', 'Insult': '竖中指', 'Face': '脸'} # 手势识别 gesture_client = AipBodyAnalysis(APP_ID, API_KEY, SECRET_KEY) capture = cv2.VideoCapture(0) # 0为默认摄像头 def camera(): while True: # 获得图片 ret, frame = capture.read() # cv2.imshow(窗口名称, 窗口显示的图像) # 显示图片 cv2.imshow('frame', frame) if cv2.waitKey(1) == ord('q'): break Thread(target=camera).start() # 引入线程防止在识别的时候卡死 def gesture_recognition(): # 第一个参数ret 为True 或者False,代表有没有读取到图片 # 第二个参数frame表示截取到一帧的图片 while True: try: ret, frame = capture.read() # 图片格式转换 image = cv2.imencode('.jpg', frame)[1] gesture = gesture_client.gesture(image) # AipBodyAnalysis内部函数 words = gesture['result'][0]['classname'] print(hand[words]) except: print('识别失败') if cv2.waitKey(1) == ord('q'): break gesture_recognition()
-
python手势识别上下左右(SVM+HOG特征)
2020-12-21 04:19:34项目环境:opencv==...2、获取上、下、左、右的手势,进行皮肤检测,将背景二值化 3、皮肤检测参考文章(https://blog.csdn.net/weixin_40893939/article/details/84527037) dataset.py # -*- coding: utf8 -*- # -
OpenCV+python手势识别框架和简单例子
2019-04-15 16:01:20OpenCV+python手势识别框架和简单例子 基于 静默虚空 大神文章的原码修改调通的。https://blog.csdn.net/linsk/article/details/76457955 -
Python-手势识别使用在TensorFlow中卷积神经网络实现
2019-08-11 06:44:49手势识别使用在TensorFlow中卷积神经网络实现 -
OpenCV+python手势识别框架和实例讲解
2020-09-20 04:33:00今天小编就为大家分享一篇OpenCV+python手势识别框架和实例讲解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧 -
基于Python+Open CV的手势识别算法设计
2022-04-03 11:47:10其中,手势识别是人机交互领域的一项关键技术,自此手势识别也迎来了一波高潮,近几年无论是在消费领域、电子领域、数码领域、家电领域甚至汽车领域上,都能或多或少的见到手势识别的身影。 手势识别在设计智能高效...