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

文章目录

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

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

界面效果:

界面代码:

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_())
相关推荐
牧歌悠悠3 小时前
【深度学习】Unet的基础介绍
人工智能·深度学习·u-net
坚毅不拔的柠檬柠檬4 小时前
AI革命下的多元生态:DeepSeek、ChatGPT、XAI、文心一言与通义千问的行业渗透与场景重构
人工智能·chatgpt·文心一言
坚毅不拔的柠檬柠檬4 小时前
2025:人工智能重构人类文明的新纪元
人工智能·重构
jixunwulian4 小时前
DeepSeek赋能AI边缘计算网关,开启智能新时代!
人工智能·边缘计算
Archie_IT4 小时前
DeepSeek R1/V3满血版——在线体验与API调用
人工智能·深度学习·ai·自然语言处理
大数据追光猿4 小时前
Python应用算法之贪心算法理解和实践
大数据·开发语言·人工智能·python·深度学习·算法·贪心算法
灵感素材坊5 小时前
解锁音乐创作新技能:AI音乐网站的正确使用方式
人工智能·经验分享·音视频
xinxiyinhe6 小时前
如何设置Cursor中.cursorrules文件
人工智能·python
AI服务老曹6 小时前
运用先进的智能算法和优化模型,进行科学合理调度的智慧园区开源了
运维·人工智能·安全·开源·音视频
alphaAIstack6 小时前
大语言模型推理能力从何而来?
人工智能·语言模型·自然语言处理