Python+OpenCV3简单手势识别

文章目录安装相关库原理简述代码效果实现今天教大家一个有趣的玩法,如何利用Python+opencv3实现简单的手势识别。当然网上也有相关教程,但绝大多数给出的代码拿来之后你是不能直接用的,这对于拿来主义的同学来说简直太“禽兽”了。所以今天我也会给出所有代码,只要配置好环境就可以运行。话不多说接下来就进入正题。安装相关库这个安装库的重要性就不用我多说了,但凡是想直接用人家的代码,就要安装人家运行所需的全部库。pip install opencv-pythonpip install opencv
摘要由CSDN通过智能技术生成


今天教大家一个有趣的玩法,如何利用Python+opencv3实现简单的手势识别。当然网上也有相关教程,但绝大多数给出的代码拿来之后你是不能直接用的,这对于拿来主义的同学来说简直太“禽兽”了。所以今天我也会给出所有代码,只要配置好环境就可以运行。话不多说接下来就进入正题。

安装相关库

这个安装库的重要性就不用我多说了,但凡是想直接用人家的代码,就要安装人家运行所需的全部库。

pip install opencv-python

pip install opencv-contrib-python

pip install numpy

原理简述

第一步: 加载图片,无论你是用cv2导入一张静态手势图片还是用摄像头导入实时图片都可以。
第二步: 肤色检测,基于HSV颜色空间H,S,V范围筛选法 HSV中 7<H<20 28<S<256 50<V<256
第三步: 进行高斯滤波
第四步: 边缘轮廓检测
第五步: 求出手势的凹凸点
第六步: 利用凹凸点个数判断当前手势,例如:0个凹凸点就是拳头,4个凹点就是布也就是5。

代码

接下来就是你们最开心的 时刻了-看代码。哈,你们高兴的太早了,我的代码注释很少的。所以。。。。我尽量添上注释。

我明说了,代码虽然可以运行,但有BUG,要在一个地方加异常判断,否则如果没检测到手的话程序就会报错退出,至于在哪加相信也不难,你们好好优化吧。问我,我可是要收费的。手动dog

# _*_ coding: UTF-8 _*_
import cv2
import numpy as np
import math
cap = cv2.VideoCapture(0)

while(cap.isOpened()):
    ret,frame = cap.read() # 读取摄像头每帧图片
    
    frame = cv2.flip(frame,1)
    kernel = np.ones((2,2),np.uint8)
    roi = frame[100:300,100:300] # 选取图片中固定位置作为手势输入

    cv2.rectangle(frame,(100,100),(300,300),(0,0,255),0) # 用红线画出手势识别框
    # 基于hsv的肤色检测
    hsv = cv2.cvtColor(roi,cv2.COLOR_BGR2HSV)
    lower_skin = np.array([0,28,70],dtype=np.uint8)
    upper_skin = np.array([20, 255, 255],dtype=np.uint8)
    
    # 进行高斯滤波
    mask = cv2.inRange(hsv,lower_skin,upper_skin)
    mask = cv2.dilate(mask,kernel,iterations=4)
    mask = cv2
  • 33
    点赞
  • 204
    收藏
    觉得还不错? 一键收藏
  • 18
    评论
评论 18
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值