python实现手势识别 - 流星社区
首页 > 编程源码 > python实现手势识别

python实现手势识别

楼主:怎挽 [3级] · 2020-4-22 ·  浏览1237 · 编程源码 · ID:

这里怎挽,进来喝杯茶,听我慢慢讲

————————————

本贴是python实现手势识别(入门)

————————————

————————————

✔ 记得点赞,回复,关注

————————————

使用open-cv实现简单的手势识别。刚刚接触python不久,看到了很多有意思的项目,尤其时关于计算机视觉的。网上搜到了一些关于手势处理的实验,我在这儿简单的实现一下(PS:和那些大佬比起来真的是差远了,毕竟刚接触不久),主要运用的知识就是opencv,python基本语法,图像处理基础知识。

最终实现结果:(犹豫不能发动图就发张图片吧)

——————

手势识别

获取视频(摄像头)

这部分没啥说的,就是获取摄像头。

`

cap = cv2.VideoCapture("C:/Users/lenovo/Videos/1.mp4")

#读取文件#

cap = cv2.VideoCapture(0)

#读取摄像头
while(True):
ret, frame = cap.read() key = cv2.waitKey(50) & 0xFF
if key == ord('q'):
break
cap.release()
cv2.destroyAllWindows()
Image
这里使用的是椭圆肤色检测模型
在RGB空间里人脸的肤色受亮度影响相当大,所以肤色点很难从非肤色点中分离出来,也就是说在此空间经过处理后,肤色点是离散的点,中间嵌有很多非肤色,这为肤色区域标定(人脸标定、眼睛等)带来了难题。如果把RGB转为YCrCb空间的话,可以忽略Y(亮度)的影响,因为该空间受亮度影响很小,肤色会产生很好的类聚。这样就把三维的空间将为二维的CrCb,肤色点会形成一定得形状,如:人脸的话会看到一个人脸的区域,手臂的话会看到一条手臂的形态。
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

————————

轮廓处理

————————

轮廓处理的话主要用到两个函数,cv2.findContours和cv2.drawContours,这两个函数的使用使用方法很容易搜到就不说了,这部分主要的问题是提取到的轮廓有很多个,但是我们只需要手的轮廓,所以我们要用sorted函数找到最大的轮廓。

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

——————————

另外帖子发不下了,全部代码在一楼

来自于互联网!

- 版权声明 - 1、本帖所有言论和图片等纯属网友个人意见,与流星社区立场无关;
2、其他单位或个人使用、转载或引用本帖时必须同时征得该帖子作者怎挽流星社区的同意;
3、备注原文地址:https://bbs.liuxingw.com/t/27041.html,可忽略第2条;
4、帖子作者需承担一切因本文发表而直接或间接导致的相关责任;
5、如本帖内容或部分内容转载自其它媒体,这并不代表本站赞同其观点和对其真实性负责;
6、如本帖若为资源类,将仅限用于学习和研究目的,您必须在下载后的24个小时之内,从您安装或使用的设备中彻底删除上述内容;
7、如果您喜欢该程序,请支持正版软件,购买注册,可以得到更好的正版服务;
8、如本帖侵犯到任何版权或违法问题,请立即邮件告知我们,我们将及时予以处理。
11条回复 |  最后回复于2020-4-22

怎挽 [3级]

全部代码
""" 从视频读取帧保存为图片"""
import cv2
import numpy as np
cap = cv2.VideoCapture("C:/Users/lenovo/Videos/1.mp4")#读取文件
#cap = cv2.VideoCapture(0)#读取摄像头

#皮肤检测
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

while(True):

ret, frame = cap.read()
#下面三行可以根据自己的电脑进行调节
src = cv2.resize(frame,(400,350), interpolation=cv2.INTER_CUBIC)#窗口大小
cv2.rectangle(src, (90, 60), (300, 300 ), (0, 255, 0))#框出截取位置
roi = src[60:300 , 90:300] # 获取手势框图

res = A(roi) # 进行肤色检测
cv2.imshow("0",roi)

gray = cv2.cvtColor(res, cv2.COLOR_BGR2GRAY)
dst = cv2.Laplacian(gray, cv2.CV_16S, ksize = 3)
Laplacian = cv2.convertScaleAbs(dst)

contour = B(Laplacian)#轮廓处理
cv2.imshow("2",contour)

key = cv2.waitKey(50) & 0xFF
if key == ord('q'):
break
cap.release()
cv2.destroyAllWindows()
发布于2020-4-22

回复列表

  • 内容加载中...

说点什么...

[]

软软的沙发
发布于2020-4-22

回复列表

  • 内容加载中...

说点什么...

怎挽 [3级]

好的,看看吧
发布于2020-4-22

回复列表

  • 内容加载中...

说点什么...

Berge [2级]

发布于2020-4-22

回复列表

  • 内容加载中...

说点什么...

怎挽 [3级]

‭@十一先生. ‬‬‬‭@甜渣✨ ‬‬‬‭@阿飛. ‬‬‬‭@冷瞳‪ ‬‬‬‭@莫得情感的咸鱼 ‬‬‬来看看
发布于2020-4-22

回复列表

  • 内容加载中...

说点什么...

[]

来了
发布于2020-4-22

回复列表

  • 内容加载中...

说点什么...

怎挽 [3级]

怎么了
发布于2020-4-22

回复列表

  • 内容加载中...

说点什么...

[]

没有啊
发布于2020-4-22

回复列表

  • 内容加载中...

说点什么...

怎挽 [3级]

看看我第七个帖子
发布于2020-4-22

回复列表

  • 内容加载中...

说点什么...

[]

毫无波澜
发布于2020-4-22

回复列表

  • 内容加载中...

说点什么...
登录注册 后才可进行评论
签到
45人签到
已签0天
  • 46579帖子
  • 1936357热点量
  • 184778火热值