资源简介

Python+CNN+Tensorflow识别手势,目前做到了0-7的手势。文件为源代码和训练集。主要是调用OpenCV,预处理的主要步骤为:去噪 -> 肤色检测 -> 二值化 -> 形态学处理 -> 轮廓提取,其中最麻烦的两项为肤色检测和轮廓提取。去噪音:使用双边滤波器,该滤波器考虑了图像的空间关系,也考虑图像的灰度关系。双边滤波同时使用了空间高斯权重和灰度相似性高斯权重,确保了边界不会被模糊掉。然后,肤色检测和二值化处理采用YCrCb颜色空间的Cr分量+Otsu法阈值分割算法针对YCrCb中Cr分量的处理,对CR通道单独进行Otsu处理,Otsu方法opencv里用threshold,Otsu算法是对图像的灰度级进行聚类。

资源截图

代码片段和文件信息

import cv2
import numpy as np
import os

# 创建目录结构
if not os.path.exists(“data“):
    os.makedirs(“data“)
    os.makedirs(“data/train“)
    os.makedirs(“data/test“)
    os.makedirs(“data/train/0“)
    os.makedirs(“data/train/1“)
    os.makedirs(“data/train/2“)
    os.makedirs(“data/train/3“)
    os.makedirs(“data/train/4“)
    os.makedirs(“data/train/5“)
    os.makedirs(“data/train/6“)
    os.makedirs(“data/train/7“)
    os.makedirs(“data/test/0“)
    os.makedirs(“data/test/1“)
    os.makedirs(“data/test/2“)
    os.makedirs(“data/test/3“)
    os.makedirs(“data/test/4“)
    os.makedirs(“data/test/6“)
    os.makedirs(“data/test/7“)
    

# 训练或测试
mode = ‘train‘
directory = ‘data/‘+mode+‘/‘

cap = cv2.VideoCapture(0)

while True:
    _ frame = cap.read()
    # 模拟镜像
    frame = cv2.flip(frame 1)
    
    # 获取现有图像的计数
    count = {‘zero‘: len(os.listdir(directory+“/0“))
             ‘one‘: len(os.listdir(directory+“/1“))
             ‘two‘: len(os.listdir(directory+“/2“))
             ‘three‘: len(os.listdir(directory+“/3“))
             ‘four‘: len(os.listdir(directory+“/4“))
             ‘five‘: len(os.listdir(directory+“/5“))
             ‘six‘: len(os.listdir(directory + “/6“)) 
             ‘seven‘: len(os.listdir(directory + “/7“))
             }
    
    # 将每一组的计数打印到屏幕上
    cv2.putText(frame “MODE : “+mode (10 50) cv2.FONT_HERSHEY_PLAIN 1 (0255255) 1)
    cv2.putText(frame “IMAGE COUNT“ (10 100) cv2.FONT_HERSHEY_PLAIN 1 (0255255) 1)
    cv2.putText(frame “ZERO : “+str(count[‘zero‘]) (10 120) cv2.FONT_HERSHEY_PLAIN 1 (0255255) 1)
    cv2.putText(frame “ONE : “+str(count[‘one‘]) (10 140) cv2.FONT_HERSHEY_PLAIN 1 (0255255) 1)
    cv2.putText(frame “TWO : “+str(count[‘two‘]) (10 160) cv2.FONT_HERSHEY_PLAIN 1 (0255255) 1)
    cv2.putText(frame “THREE : “+str(count[‘three‘]) (10 180) cv2.FONT_HERSHEY_PLAIN 1 (0255255) 1)
    cv2.putText(frame “FOUR : “+str(count[‘four‘]) (10 200) cv2.FONT_HERSHEY_PLAIN 1 (0255255) 1)
    cv2.putText(frame “FIVE : “+str(count[‘five‘]) (10 220) cv2.FONT_HERSHEY_PLAIN 1 (0255255) 1)
    cv2.putText(frame “SIX : “+str(count[‘six‘]) (10 240) cv2.FONT_HERSHEY_PLAIN 1 (0255255) 1)
    cv2.putText(frame “SEVEN: “+str(count[‘seven‘]) (10 260) cv2.FONT_HERSHEY_PLAIN 1 (0255255) 1)
    
    # 感兴趣区域坐标
    x1 = int(0.5*frame.shape[1])
    y1 = 10
    x2 = frame.shape[1]-10
    y2 = int(0.5*frame.shape[1])
    # 画ROI
    # 递增/递减1是对边界框的补偿
    cv2.rectangle(frame (x1-1 y1-1) (x2+1 y2+1) (25500) 1)
    # 提取ROI
    roi = frame[y1:y2 x1:x2]
    roi = cv2.resize(roi (64 64)) 
 
    cv2.imshow(“frame“ frame)
    
    #_ mask = cv2.threshold(mask 200 255 cv2.THRESH_BINARY)
    #kernel = np.ones((1 1) np.uint8)
    #img = cv2.dilate(mask kernel iterations=1)
    #img = cv2.erode(mask kernel iterations=1)
    # 拍照后进行处理!
    roi = cv2.cvtColor(roi cv2.COLOR_BGR2GRAY)
    _ roi = cv2.threshold(roi 120 255 cv2.THRESH_BINA

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件        174  2020-02-28 07:05  手势识别\.idea\inspectionProfiles\profiles_settings.xml

     文件        199  2020-04-11 15:04  手势识别\.idea\misc.xml

     文件        319  2020-02-28 07:05  手势识别\.idea\modules.xml

     文件        415  2020-04-11 15:04  手势识别\.idea\number-sign-recognition-master.iml

     文件       8178  2020-05-11 14:35  手势识别\.idea\workspace.xml

     文件     101140  2020-05-25 16:25  手势识别\1.jpg

     文件      24396  2020-04-11 14:56  手势识别\venv\Lib\tcl8.6\init.tcl

     文件        124  2020-04-11 14:56  手势识别\venv\pyvenv.cfg

     文件        639  2020-04-11 14:56  手势识别\venv\scripts\activate.bat

     文件       1455  2020-04-11 14:56  手势识别\venv\scripts\Activate.ps1

     文件        389  2020-04-11 14:56  手势识别\venv\scripts\deactivate.bat

     文件     196760  2020-04-11 14:56  手势识别\venv\scripts\pyexpat.pyd

     文件      42136  2020-04-11 14:56  手势识别\venv\scripts\python.exe

     文件      57496  2020-04-11 14:56  手势识别\venv\scripts\python3.dll

     文件    3942552  2020-04-11 14:56  手势识别\venv\scripts\python35.dll

     文件      42136  2020-04-11 14:56  手势识别\venv\scripts\pythonw.exe

     文件      26776  2020-04-11 14:56  手势识别\venv\scripts\select.pyd

     文件     769688  2020-04-11 14:56  手势识别\venv\scripts\sqlite3.dll

     文件    1640960  2020-04-11 14:56  手势识别\venv\scripts\tcl86t.dll

     文件    1955328  2020-04-11 14:56  手势识别\venv\scripts\tk86t.dll

     文件     872600  2020-04-11 14:56  手势识别\venv\scripts\unicodedata.pyd

     文件      87888  2020-04-11 14:56  手势识别\venv\scripts\vcruntime140.dll

     文件      26264  2020-04-11 14:56  手势识别\venv\scripts\winsound.pyd

     文件      94360  2020-04-11 14:56  手势识别\venv\scripts\_bz2.pyd

     文件     129176  2020-04-11 14:56  手势识别\venv\scripts\_ctypes.pyd

     文件      31384  2020-04-11 14:56  手势识别\venv\scripts\_ctypes_test.pyd

     文件     321688  2020-04-11 14:56  手势识别\venv\scripts\_decimal.pyd

     文件     198808  2020-04-11 14:56  手势识别\venv\scripts\_elementtree.pyd

     文件    1450648  2020-04-11 14:56  手势识别\venv\scripts\_hashlib.pyd

     文件     153240  2020-04-11 14:56  手势识别\venv\scripts\_lzma.pyd

............此处省略2882个文件信息

评论

共有 条评论