福建交科建设有限公司官方网站,不用收费的软件,企业如何免费做网站,电商平台的设计0、项目介绍
首先#xff0c;我可以保证在这里#xff0c;你并不需要多么了解深的机器学习算法#xff0c;我的初衷是通过本项目#xff0c;激发大家学习机器学习的动力。选择这种手势原因是因为只有24个字母#xff0c;你的电脑足以带的动#xff0c;虽然我只训练A、B、…
0、项目介绍
首先我可以保证在这里你并不需要多么了解深的机器学习算法我的初衷是通过本项目激发大家学习机器学习的动力。选择这种手势原因是因为只有24个字母你的电脑足以带的动虽然我只训练A、B、C、D等字母的手势识别但只要掌握了方法你可以全部弄完24个字母的手势我觉得没这必要。 如果你的思维足够的发散相信你一定会有其他的好点子。
1、效果展示 2、项目搭建 这个地方依赖的包有些多{cv2、numpy、cvzone、tensorflow}
tensorflow的下载用pip下载不了找了很多办法本人有效解决的是
pip install --index-url https://pypi.douban.com/simple tensorflow
3、代码的展示与讲解
# traing.pyimport cv2
import numpy as np
from cvzone.HandTrackingModule import HandDetector
import math
import timecapcv2.VideoCapture(0)
detectorHandDetector(maxHands1)offset20
imgSize300
folder.21 Americal_ASL/Data/D
count0while True:ret,imgcap.read()hands,imgdetector.findHands(img)if hands:hand hands[0]x,y,w,hhand[bbox]imgWhitenp.ones((imgSize,imgSize,3),np.uint8)*255imgCrop img[y-offset:yhoffset,x-offset:xwoffset]imgCropShape imgCrop.shapeaspectRatio h/wif aspectRatio1:kimgSize/hwCalmath.ceil(k*w)imgResizecv2.resize(imgCrop,(wCal,imgSize))imgResizeShapeimgResize.shapewGapmath.ceil((imgSize-wCal)/2)imgWhite[:,wGap:wGapwCal]imgResizeelse:k imgSize / whCal math.ceil(k * h)imgResize cv2.resize(imgCrop, (imgSize,hCal))imgResizeShape imgResize.shapehGap math.ceil((imgSize - hCal) / 2)imgWhite[hGap:hGap hCal,:] imgResizecv2.imshow(ImageCrop,imgCrop)cv2.imshow(imageWhite,imgWhite)cv2.imshow(Image,img)kcv2.waitKey(1)if kord(s):count1cv2.imwrite(f{folder}/Image_{time.time()}.jpg,imgWhite)print(count)elif k27:break首先在这里先运行这个文件它会出现下面这样的窗口 接下来就按照美国ASL手势对数据进行收集你只需要在成功识别后不断的点击键盘s键对图片进行保存一定要记住修改保存的文件位置也就是变量folder我收集的数量大概在300张左右多一点少一些也无所谓识别的效果还是相当不错的。
Teachable Machine 是一个基于 Web 的工具为每个人创造快速、简明、易用的机器学习模型。
进入这个网站Teachable Machine将文件{A、B、C、D}拖进去可能需要一点时间耐心等等就行获得了keras_model.h5和labels.txt文件我在得到labels.txt文件时出现了点问题不过你也可以手动添加一下毕竟不是很多。 0 A 1 1 B 2 2 C 3 3 D 4 这个网站需要KX上网当时做完没有保存图片现在流量也已经用完了所以这个地方大家就自己琢磨一下吧。
# test.py
import cv2
import numpy as np
from cvzone.HandTrackingModule import HandDetector
import math
from cvzone.ClassificationModule import Classifiercapcv2.VideoCapture(0)
detectorHandDetector(maxHands1)
classifierClassifier(E:\pythonProject1\Opencv project training//21 Americal_ASL\Model\keras_model.h5,E:\pythonProject1\Opencv project training//21 Americal_ASL\Model\labels.txt)offset20
imgSize300
# folder.21 Americal_ASL/Data/D
count0
labels [A,B,C,D]while True:ret,imgcap.read()imgOutput img.copy()hands,imgdetector.findHands(img)if hands:hand hands[0]x,y,w,hhand[bbox]imgWhitenp.ones((imgSize,imgSize,3),np.uint8)*255imgCrop img[y-offset:yhoffset,x-offset:xwoffset]imgCropShape imgCrop.shapeaspectRatio h/wif aspectRatio1:kimgSize/hwCalmath.ceil(k*w)imgResizecv2.resize(imgCrop,(wCal,imgSize))imgResizeShapeimgResize.shapewGapmath.ceil((imgSize-wCal)/2)imgWhite[:,wGap:wGapwCal]imgResizeprediction, index classifier.getPrediction(imgWhite,drawFalse)print(prediction,index)else:k imgSize / whCal math.ceil(k * h)imgResize cv2.resize(imgCrop, (imgSize,hCal))imgResizeShape imgResize.shapehGap math.ceil((imgSize - hCal) / 2)imgWhite[hGap:hGap hCal,:] imgResizeprediction, index classifier.getPrediction(imgWhite, drawFalse)cv2.rectangle(imgOutput, (x - offset, y - 50),(x - offset120, y - offset), (255, 0, 255), cv2.FILLED)cv2.putText(imgOutput,labels[index],(x12,y-27),cv2.FONT_HERSHEY_COMPLEX,1.8,(255,255,255),2)cv2.rectangle(imgOutput,(x-offset,y-offset),(xwoffset,yhoffset),(255,0,255),4)cv2.imshow(ImageCrop,imgCrop)cv2.imshow(imageWhite,imgWhite)cv2.imshow(Image,imgOutput)kcv2.waitKey(1)if k27:break
这是用于测试的代码运行之后就可以展现我们本项目的效果了。 4、项目资源
GitHub:21 美国ASL手势识别 5、项目总结
顺利完成因为这个是很早之前做的一直没空写而且因为之前python环境出现了问题重新装了一次下载的那些包都没了有很多空缺这几天装Tensorflow也是把我搞得心态爆炸但基础的效果总算是可以展现了。虽然teachable machine可能你进不去但如果你只是抱着学习的态度那么在GitHub里面我也提供了我做的A、B、C、D的文件。