一、手势识别&Python
主要是跟的这位老哥的,其他的环境就掉队了 (本人之前没接触过Python)
转https://www.youtube.com/watch?v=wa2ARoUUdU8
手势我训练了三个效果如下
Python手势识别_哔哩哔哩_bilibiliPython手势识别, 视频播放量 4、弹幕量 0、点赞数 0、投硬币枚数 0、收藏人数 0、转发人数 0, 视频作者 我要烫火锅, 作者简介 落俗不可避免 浪漫至死不渝,相关视频:听人劝吃饱饭,盲目自学Python的后果真的很严重!,Python无纸化学习真的是yyds!太香了!!!,【附源码】100个Python实战项目,练完即可就业,从入门到进阶,学完可自己爬取,超级适合新手入门学习!,听学长一句劝!学Python千万不要盲目自学!后果真的很严重!,觉得学算法和数据结构太枯燥的,一定要看看这个网站,AI换脸软件安装教程,一键安装,永久使用,手把手五分钟教会你,软件安装+实操讲解!,代码总是学完就忘记?100个爬虫实战项目!让你沉迷学习丨学以致用丨下一个Python大神就是你!,Python 入门进阶全套Obsidian笔记库 收藏就是赚到,【8月最新】更新了国内ChatGPT4.0+AI绘画免费使用教程,无任何限制,打开直接使用!,VR游戏《Drakheir》魔法技能展示合集
https://www.bilibili.com/video/BV1Cj411z76A/?vd_source=65f5078ffde00635035aba35d592283e二、UE4与pythonHTTP通信
大哥写的很详细
转UE4 获取HTTP接口数据 (UE4与python通信)_ue4 http_Zhichao_97的博客-CSDN博客
之后再把这两段码揉到一起这样就能得到一个ue里的方法可以得到到ptyhon的检测结果
(可是这样需要先运行服务器 看结果屏幕也沾满 之后想到了脚本启动)
三、.bat启动python
大哥写的很详细 很适合我只需三行
转如何使用BAT脚本调用Python_bat调用python脚本_code_kd的博客-CSDN博客
(可是这样不够优雅还是多了一个黑窗,没错~那我们得隐藏一下)
四、运行bat时隐藏cmd窗口
大哥写的很详细 很适合我再加三行
转java cmd 隐藏窗口_运行bat时隐藏cmd窗口_weixin_39834281的博客-CSDN博客
这个测试是只有pythonServer(修改了 return jsonify(PythonServer="This is Python"))
(server就一直挂在后台了,更优雅的就是需要加关server,ue里runtime启动.bat——可是我还灭有测四)有知道的大佬请一定留言
附上萌新的代码(之所以没有一上来放码是里面有截图需要再teachablemachine下模型)
直接跑码没用!!直接跑码没用!!直接跑码没用!!
第一次写python勿喷(倒是环境挺恶心的)
这几个在装的时候也挺费功夫的建议国内镜像源
python.exe -m pip instal1 --upgrade pip
pip install (mediapipe、opencv、cvzone、tensorflow、flask)
import cv2
from cvzone.HandTrackingModule import HandDetector
from cvzone.ClassificationModule import Classifier
import numpy as np
import math
import time
# Http
from flask import Flask, request,jsonify
cap = cv2.VideoCapture(0)
detector = HandDetector(maxHands=1)#//最多一只手
# 分类器 路径
classifier = Classifier("Model/keras_model.h5" , "Model/labels.txt")
offset = 20
imgSize = 300
counter = 0
#按下z 保存文件夹里 A==剪刀 B==石头 C==布
folder = "Data/C"
labels = ["JianDao","ShiTou","Bu"]
#改动
indexP = 0
bStop = True
def Wave_Goodbye( ):
while bStop:
success, img = cap.read()
imgOutput = img.copy()
# 绘制 手
hands, img = detector.findHands(img )
#不绘制手
#hands = detector.findHands(img , draw= False )
if hands:
hand = hands[0]
x,y,w,h = hand['bbox']
imgWhite = np.ones((imgSize,imgSize,3),np.uint8)*255
imgCrop = img[ y-offset :y+h+offset , x-offset : x+w+offset ] #图像大小
imgCropShape = imgCrop.shape
#裁剪矩阵
aspectRatio = h/w
if aspectRatio > 1:
k = imgSize / h
wCal = math.ceil(k * w)
imgResize = cv2.resize(imgCrop,(wCal,imgSize))
imgResizeShape = imgResize.shape
wGap = math.ceil((imgSize - wCal)/2)
imgWhite[:, wGap:wCal+wGap] = imgResize
#分类器的 会给预测和索引
prediction , indexP = classifier.getPrediction(imgWhite)
#print(prediction , index)
#bStop = False
return indexP
else:
k = imgSize / w
hCal = math.ceil(k * h)
imgResize = cv2.resize(imgCrop,(imgSize,hCal))
imgResizeShape = imgResize.shape
hGap = math.ceil((imgSize - hCal)/2)
imgWhite[ hGap:hCal+hGap , : ] = imgResize
prediction , indexP = classifier.getPrediction(imgWhite)
cv2.putText(imgOutput , labels[indexP] ,(x,y-20) , cv2.FONT_HERSHEY_COMPLEX , 2 , (255,0,255) , 2)
#bStop = False
return indexP
#cv2.imshow("ImageCrop",imgCrop)#手部区域的窗口
#cv2.imshow("ImgeWhite",imgWhite)#
#Http
cv2.imshow("Image",imgOutput)
cv2.waitKey(1)
# 按z截图
#key = cv2.waitKey(1)
#if key == ord("z"):
#计数器
#counter += 1
#cv2.imwrite(f'{folder}/Image_{time.time()}.jpg',imgWhite)
#print(counter)
app = Flask(__name__)
@app.route('/test', methods=["POST"])
def test():
print(request.get_data(as_text=True))
bStop = True
Temp = Wave_Goodbye( )
print(Temp)
return jsonify( PythonServer = labels[Temp] )
if __name__ == '__main__':
app.run(host='0.0.0.0')
结果是我想要的(精度还是和采集数量角度有关)