《学习笔记》手势识别—Python识别—结果传到UE5

一、手势识别&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')    
       

结果是我想要的(精度还是和采集数量角度有关)

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值