基于深度学习的人体关键点检测与姿态识别

文章目录

源码下载地址:
源码地址在视频简介中

深度学习人体关键点检测,姿态识别

界面效果:

界面代码:

python 复制代码
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
from PyQt5.QtCore import *
from untitled import Ui_Form
import sys
import cv2 as cv
from PyQt5.QtCore import QCoreApplication
import numpy as np
from PyQt5 import QtCore,QtGui
from PIL import Image
from predicts import pp
import time
from PyQt5 import QtWidgets
import cv2
class My(QMainWindow,Ui_Form):
    def __init__(self):
        super(My,self).__init__()
        self.setupUi(self)
        self.setWindowTitle('人体姿态识别')
        self.use_palette()

        self.pushButton.clicked.connect(self.pic)

        self.pushButton_2.clicked.connect(self.pre)
        self.pushButton_3.clicked.connect(self.video)

        self._timer = QTimer(self)
        self._timer.timeout.connect(self.play)

    def video(self):
        self._timer.stop()
        v, videoType = QFileDialog.getOpenFileName(self,
                                                   "打开视频",
                                                   "",
                                                   " *.mp4;;*.avi;;All Files (*)")

        if v=='':
            return
        self.ved = cv2.VideoCapture(v)
        qq = self.ved.isOpened()
        if qq == False:
            msg_box = QMessageBox(QMessageBox.Warning, 'Warning', '请选择视频!')
            msg_box.exec_()
            return
        self._timer.stop()
        self._timer.start(1)
    def play(self):
        try:
            r, frame = self.ved.read()
            orial=self.cv_qt(frame)
            self.label.setPixmap(
                QPixmap.fromImage(orial).scaled(self.label.width(), self.label.height(), QtCore.Qt.KeepAspectRatio))


            self.out, zt = pp(frame)
            out = self.cv_qt(self.out)
            self.label_2.setPixmap(
                QPixmap.fromImage(out).scaled(self.label.width(), self.label.height(), QtCore.Qt.KeepAspectRatio))
            self.label_4.setText(zt)
        except:
            self._timer.stop()


    def pre(self):
        self._timer.stop()

        self.out,zt=pp(self.img[...,::-1])
        out=self.cv_qt(self.out)
        self.label_2.setPixmap(QPixmap.fromImage(out).scaled(self.label.width(),self.label.height(),QtCore.Qt.KeepAspectRatio))
        self.label_4.setText(zt)
    def pic(self):
        self._timer.stop()
        imgName, imgType = QFileDialog.getOpenFileName(self,
                                                       "打开图片",
                                                       "",
                                                       " *.png;;*.jpg;;*.jpeg;;*.bmp;;All Files (*)")
        if imgName=='':
            return
        #KeepAspectRatio
        png = QtGui.QPixmap(imgName).scaled(self.label.width(),self.label.height(),QtCore.Qt.KeepAspectRatio)  # 适应设计label时的大小
        self.label.setPixmap(png)

        self.img=Image.open(imgName)
        self.img=np.array(self.img)[...,:3]
    def cv_qt(self, src):
        #src必须为bgr格式图像
        #src必须为bgr格式图像
        #src必须为bgr格式图像
        if len(src.shape)==2:
            src=np.expand_dims(src,axis=-1)
            src=np.tile(src,(1,1,3))
            h, w, d = src.shape
        else:h, w, d = src.shape



        bytesperline = d * w
        # self.src=cv.cvtColor(self.src,cv.COLOR_BGR2RGB)
        qt_image = QImage(src.data, w, h, bytesperline, QImage.Format_RGB888).rgbSwapped()
        return qt_image
    #设置背景图片函数
    def use_palette(self):
        self.setWindowTitle("人体姿态识别")
        window_pale = QtGui.QPalette()
        window_pale.setBrush(self.backgroundRole(),
                             QtGui.QBrush(QtGui.QPixmap(r"./back.jpg")))
        self.setPalette(window_pale)


if __name__ == '__main__':
    QCoreApplication.setAttribute(QtCore.Qt.AA_EnableHighDpiScaling)
    app=QApplication(sys.argv)
    my=My()
    my.show()
    sys.exit(app.exec_())
相关推荐
我是大卫5 小时前
【图】解LLM:用图理解大语言模型
人工智能
勇叔6 小时前
从 LangChain SQLAgent 天生缺陷到五把安全锁落地 — 牧场 AI 查询实战踩坑指南
人工智能
Kel6 小时前
GQA 与 KV 缓存(Grouped-Query Attention & KV Cache)
人工智能
DogDaoDao6 小时前
OpenBrowser 深度解析:让 AI 真正「用上」浏览器的自主代理框架
人工智能·程序员·大模型·github·web·ai工具·openbrowser
_Jimmy_6 小时前
Tool Calling 与 Function Calling 区别
人工智能·python·langchain
ITmaster07316 小时前
告别 IDE?Android CLI 来了,开发进入 AI Agent 时代
android·ide·人工智能
陈明勇6 小时前
一篇文章,多种表达:我用 Seed Evolving 生成知识卡片
人工智能
墨舟的AI笔记7 小时前
ECS 中的确定性随机与回放:让帧同步在 DOTS 上成立
人工智能
图特摩斯科技7 小时前
本体智能应用案例实践分享:汽车零部件库存优化与召回应急保障
人工智能·汽车·palantir·ontology·ontoflow·ontoos
专业工业电源打工人7 小时前
F0505S-2WR3 适配优选 钡特电源 DF2-05S05LS|2W 隔离 DC-DC 模块电源5V转5V硬件选型参数规格解析
大数据·网络·人工智能