import math
import time
import cv2
import numpy
from cvzone.HandTrackingModule import HandDetector
from cvzone.ClassificationModule import Classifier
import numpy as np # 用来创建矩阵
import tensorflow as tf
cap = cv2.VideoCapture(0) # 网络摄像头 起名为0
detector = HandDetector(maxHands=1) # 追踪一个手
classifier = Classifier("Model/keras_model.h5", "Model/labels.txt") # 分类器模型
offset = 20 # 偏移量不仅仅是获取手的部分,防止损坏
imgSize = 300 # 定义展示图片的面积
counter = 0
folder = "Data/C"
# labels = ["A", "B", "C"]
while True:
success, img = cap.read()
hands, img = detector.findHands(img)
if hands:
hand = hands[0] # 因为只有一个手
x, y, w, h = hand['bbox'] # 获取长宽高,存储为boding box
imgWhite = np.ones((imgSize, imgSize, 3),
numpy.uint8) * 255 # 创建一个背景板矩阵300*300*3 ,颜色阈值设为0-255 即为8bit numpy.uint8 *255将背景从1变成255即为白色
imgCrop = img[y - offset:y + h + offset,
x - offset:x + w + offset] # 因为是矩阵,所以定义他的初始x,y和宽度 创建一个offset变量,获取比手部大一些的图案
imgCropShape = imgCrop.shape # 矩阵由长度,宽度和channel组成
aspectRatio = h / w # 判断捕捉图形的比例
if aspectRatio > 1:
k = imgSize / h # 获取拉伸常数
wCal = math.ceil(k * w) # 始终将w宽度变大 即 3.2变为4 3.6变为4 等等
imgResize = cv2.resize(imgCrop, (wCal, imgSize))
imgResizeShape = imgResize.shape # 矩阵由长度,宽度和channel组成
wGap = math.ceil((imgSize - wCal) / 2) # 将画面移至中心点,通过预先留出位置 即imgSize减去计算出的w宽度 获取最终的位置
imgWhite[0:imgResizeShape[0], wGap:wCal + wGap] = imgResize # 将imgResizeShape的手部图像 放在白色背景板上
# prediction, index = classifier.getPrediction(img)
# print(prediction,index)
else:
k = imgSize / w # 获取拉伸常数
hCal = math.ceil(k * h) # 始终将w宽度变大 即 3.2变为4 3.6变为4 等等
imgResize = cv2.resize(imgCrop, (imgSize, hCal))
imgResizeShape = imgResize.shape # 矩阵由长度,宽度和channel组成
hGap = math.ceil((imgSize - hCal) / 2) # 将画面移至中心点,通过预先留出位置 即imgSize减去计算出的w宽度 获取最终的位置
imgWhite[hGap:hCal + hGap, ] = imgResize
# cv2.imshow("ImageCrop", imgCrop) #离镜头过近将会失去捕捉画面? 如何解决?
cv2.imshow("ImageWhite", imgWhite)
cv2.imshow("Image", img)
key = cv2.waitKey(1)
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
基于Python和深度学习模型的手语翻译程序.zip (2个子文件)
HandTracking-main
dataCollection.py 3KB
testRecognition.py 3KB
共 2 条
- 1
资源评论
- Little_White_www2024-04-02发现一个超赞的资源,赶紧学习起来,大家一起进步,支持!
博士僧小星
- 粉丝: 1922
- 资源: 5884
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功