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

文章目录

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

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

界面效果:

界面代码:

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_())
相关推荐
月岛雫-15 分钟前
“单标签/多标签” vs “二分类/多分类”
人工智能·分类·数据挖掘
似乎很简单19 分钟前
卷积神经网络(CNN)
深度学习·神经网络·cnn
云卓SKYDROID31 分钟前
无人机飞行速度模块技术要点概述
人工智能·无人机·飞行速度·高科技·云卓科技
币须赢1 小时前
英伟达Thor芯片套件9月发货 “物理AI”有哪些?
大数据·人工智能
盼小辉丶1 小时前
Transformer实战(18)——微调Transformer语言模型进行回归分析
深度学习·语言模型·回归·transformer
格林威1 小时前
机器视觉检测如何使用360 度全景成像镜头进行AI 瑕疵检测
人工智能·深度学习·数码相机·机器学习·计算机视觉·视觉检测·相机
互联网之声1 小时前
崔传波教授:以科技与人文之光,点亮近视患者的清晰视界‌
人工智能
lily363926046a1 小时前
智联未来 点赋科技
大数据·人工智能
聚客AI1 小时前
🍬传统工程师转型:智能体架构师的技能图谱
人工智能·agent·mcp