凡科建站多少钱小型办公室中式装修
2026/4/6 5:37:04 网站建设 项目流程
凡科建站多少钱,小型办公室中式装修,做网站苏州,吴江建设局网站1 1 基于深度学习的人体姿态估计系统 基于YOLO12的人体姿态估计系统 姿态估计系统 本项目已经训练好模型#xff0c;配置好环境可直接使用#xff0c;运行效果看上图 项目介绍#xff1a; 软件#xff1a;PycharmAnaconda 环境#xff1a;python3.8 opencv-python PySide6…11基于深度学习的人体姿态估计系统 基于YOLO12的人体姿态估计系统 姿态估计系统本项目已经训练好模型配置好环境可直接使用运行效果看上图项目介绍软件PycharmAnaconda环境python3.8 opencv-python PySide6 torch1.9文件1.完整程序文件.py等2.UI界面源文件、图标.ui、.qrc、.py等3.测试图片、视频文件.jpeg、.mp4、.avi等功能 系统可用于姿态估计识别; 支持图片、视频及摄像头进行检测: 界面可实时显示目标位置、目标总数、置信度等信息: 支持检测结果保存;①选择图片进行对于姿态估计识别检测。②选择视频进行对于姿态估计识别检测。③摄像头进行检测对于姿态估计识别检测。1以下文字及代码仅供参考学习使用✅ 正确理解基于YOLOv12-Pose的人体姿态估计系统完整的基于 YOLOv8-Pose 的人体姿态估计系统支持✅ 图片 / 视频 / 摄像头实时检测✅ 姿态关键点可视化17个点✅ UI界面PySide6✅ 登录验证✅ 结果保存与信息显示 项目名称基于深度学习的人体姿态估计系统YOLOv8-Pose 一、项目结构pose_estimation_system/ ├── models/ │ └── yolov8n-pose.pt # 预训练模型 ├── resources/ │ ├── icons/ # 图标文件 │ └── test_images/ # 测试图片 │ └── test_videos/ # 测试视频 ├── ui/ │ ├── login.ui # 登录界面 │ └── main.ui # 主界面 ├── utils/ │ ├── pose_utils.py # 姿态处理函数 │ └── detect.py # 推理代码 ├── main.py # 主程序入口 └── requirements.txt 二、环境配置requirements.txtpython3.8 torch1.9.0cu111 torchvision0.10.0cu111 opencv-python4.5.5 PySide66.3.0 ultralytics8.0.0 numpy1.21.0安装命令conda create -n pose_envpython3.8conda activate pose_env pipinstall-r requirements.txt 三、登录界面login.ui→login.py1. 使用 Qt Designer 设计.ui文件可导出2.login.py—— 登录逻辑# login.pyfromPySide6.QtWidgetsimportQApplication,QMainWindow,QWidget,QVBoxLayout,QLabel,QLineEdit,QPushButton,QFramefromPySide6.QtCoreimportQtimportsysclassLoginWindow(QMainWindow):def__init__(self):super().__init__()self.setWindowTitle(基于深度学习的人体姿态估计系统)self.setGeometry(400,200,400,300)central_widgetQWidget()self.setCentralWidget(central_widget)layoutQVBoxLayout(central_widget)title_labelQLabel(h2基于深度学习的人体姿态估计系统/h2)title_label.setAlignment(Qt.AlignCenter)layout.addWidget(title_label)# 用户名和密码输入框self.username_inputQLineEdit()self.username_input.setPlaceholderText(请输入用户名)layout.addWidget(self.username_input)self.password_inputQLineEdit()self.password_input.setPlaceholderText(请输入密码)self.password_input.setEchoMode(QLineEdit.Password)layout.addWidget(self.password_input)login_btnQPushButton(立即登录)login_btn.clicked.connect(self.login)layout.addWidget(login_btn)deflogin(self):usernameself.username_input.text()passwordself.password_input.text()ifusername123andpassword123:self.close()self.main_windowMainWindow()self.main_window.show()else:QMessageBox.warning(self,错误,用户名或密码错误)classMainWindow(QMainWindow):def__init__(self):super().__init__()self.setWindowTitle(主界面)self.setGeometry(100,100,1200,800)self.init_ui()definit_ui(self):# 添加主界面内容图片、视频等pass️ 四、姿态估计核心detect.py# detect.py 基于 YOLOv8-Pose 的人体姿态估计 importcv2importnumpyasnpfromultralyticsimportYOLOimporttorchclassPoseDetector:def__init__(self,model_pathmodels/yolov8n-pose.pt):self.modelYOLO(model_path)self.class_names[person]self.keypoints_names[nose,left eye,right eye,left ear,right ear,left shoulder,right shoulder,left elbow,right elbow,left wrist,right wrist,left hip,right hip,left knee,right knee,left ankle,right ankle]defdetect_pose(self,frame,conf_threshold0.5):resultsself.model(frame,confconf_threshold,iou0.45)poses[]forresultinresults[0].poses:ifresultisNone:continuekeypointsresult.xyxy.cpu().numpy()[0]# 获取关键点坐标confidencesresult.conf.cpu().numpy()[0]boxesresult.boxes.xyxy.cpu().numpy()[0]# 提取关键点kpts[]foriinrange(17):x,y,confkeypoints[i]ifconf0.3:# 关键点置信度阈值kpts.append((int(x),int(y)))else:kpts.append(None)poses.append({bbox:boxes,kpts:kpts,confidence:float(confidences[0])})returnposesdefdraw_pose(self,frame,poses):绘制姿态结果forposeinposes:bboxpose[bbox]kptspose[kpts]confpose[confidence]# 绘制边界框cv2.rectangle(frame,(int(bbox[0]),int(bbox[1])),(int(bbox[2]),int(bbox[3])),(0,255,0),2)cv2.putText(frame,fPerson{conf:.2f},(int(bbox[0]),int(bbox[1])-10),cv2.FONT_HERSHEY_SIMPLEX,0.6,(0,255,0),2)# 绘制关键点fori,ptinenumerate(kpts):ifptisnotNone:cv2.circle(frame,pt,5,(0,0,255),-1)cv2.putText(frame,self.keypoints_names[i],pt,cv2.FONT_HERSHEY_SIMPLEX,0.4,(255,0,0),1)# 连接骨骼connections[(0,1),(0,2),(1,3),(2,4),(0,5),(0,6),(5,7),(7,9),(6,8),(8,10),(5,11),(6,12),(11,13),(13,15),(12,14),(14,16)]fori,jinconnections:ifkpts[i]isnotNoneandkpts[j]isnotNone:cv2.line(frame,kpts[i],kpts[j],(255,0,0),2)returnframe️ 五、主界面main.py# main.pyfromPySide6.QtWidgetsimportQApplication,QMainWindow,QLabel,QPushButton,QVBoxLayout,QHBoxLayout,QFileDialog,QGroupBox,QTextEdit,QSliderfromPySide6.QtGuiimportQPixmap,QImagefromPySide6.QtCoreimportQt,QTimerimportcv2importsysfromdetectimportPoseDetectorclassMainWindow(QMainWindow):def__init__(self):super().__init__()self.setWindowTitle(人体姿态估计系统)self.setGeometry(100,100,1200,800)self.detectorPoseDetector()self.init_ui()self.timerQTimer()self.timer.timeout.connect(self.update_frame)self.capNonedefinit_ui(self):central_widgetQWidget()self.setCentralWidget(central_widget)layoutQVBoxLayout(central_widget)# 上方原始图 vs 检测图top_layoutQHBoxLayout()self.original_labelQLabel(原始图像)self.detected_labelQLabel(检测结果)top_layout.addWidget(self.original_label)top_layout.addWidget(self.detected_label)layout.addLayout(top_layout)# 控制区control_groupQGroupBox(控制面板)control_layoutQVBoxLayout()self.image_btnQPushButton(上传图片)self.image_btn.clicked.connect(self.load_image)control_layout.addWidget(self.image_btn)self.video_btnQPushButton(打开视频)self.video_btn.clicked.connect(self.open_video)control_layout.addWidget(self.video_btn)self.camera_btnQPushButton(打开摄像头)self.camera_btn.clicked.connect(self.open_camera)control_layout.addWidget(self.camera_btn)self.save_btnQPushButton(保存结果)self.save_btn.clicked.connect(self.save_result)control_layout.addWidget(self.save_btn)self.stop_btnQPushButton(停止)self.stop_btn.clicked.connect(self.stop_detection)control_layout.addWidget(self.stop_btn)control_group.setLayout(control_layout)layout.addWidget(control_group)# 信息显示区info_groupQGroupBox(检测信息)info_layoutQVBoxLayout()self.info_textQTextEdit()info_layout.addWidget(self.info_text)info_group.setLayout(info_layout)layout.addWidget(info_group)# 初始化图像标签self.original_label.setPixmap(QPixmap(resources/test_images/default.jpg))self.detected_label.setPixmap(QPixmap(resources/test_images/default.jpg))defload_image(self):path,_QFileDialog.getOpenFileName(self,选择图片,,Image Files (*.jpg *.png *.bmp))ifpath:self.current_imagecv2.imread(path)self.display_image(self.current_image,self.original_label)self.detect_and_display()defopen_video(self):path,_QFileDialog.getOpenFileName(self,选择视频,,Video Files (*.mp4 *.avi))ifpath:self.capcv2.VideoCapture(path)self.timer.start(30)# 30 FPSdefopen_camera(self):self.capcv2.VideoCapture(0)self.timer.start(30)defupdate_frame(self):ret,frameself.cap.read()ifret:self.display_image(frame,self.original_label)detected_frameself.detector.draw_pose(frame.copy(),self.detector.detect_pose(frame))self.display_image(detected_frame,self.detected_label)self.update_info(frame)defdetect_and_display(self):ifhasattr(self,current_image):detected_frameself.detector.draw_pose(self.current_image.copy(),self.detector.detect_pose(self.current_image))self.display_image(detected_frame,self.detected_label)self.update_info(self.current_image)defdisplay_image(self,image,label):h,wimage.shape[:2]scalemin(400/w,400/h)new_w,new_hint(w*scale),int(h*scale)resizedcv2.resize(image,(new_w,new_h))rgbcv2.cvtColor(resized,cv2.COLOR_BGR2RGB)qimgQImage(rgb.data,new_w,new_h,new_w*3,QImage.Format_RGB888)pixmapQPixmap.fromImage(qimg)label.setPixmap(pixmap)defupdate_info(self,frame):posesself.detector.detect_pose(frame)infof目标总数:{len(poses)}\nfori,poseinenumerate(poses):infof目标{i}: 置信度{pose[confidence]:.2f}\nself.info_text.setText(info)defsave_result(self):ifhasattr(self,current_image):path,_QFileDialog.getSaveFileName(self,保存结果,,PNG Image (*.png))ifpath:cv2.imwrite(path,self.current_image)QMessageBox.information(self,成功,结果已保存)defstop_detection(self):self.timer.stop()ifself.cap:self.cap.release()self.capNonedefcloseEvent(self,event):ifself.cap:self.cap.release()event.accept()defmain():appQApplication(sys.argv)windowMainWindow()window.show()sys.exit(app.exec_())if__name____main__:main() 六、运行方式下载预训练模型wgethttps://github.com/ultralytics/assets/releases/download/v8.0.0/yolov8n-pose.pt -O models/yolov8n-pose.pt运行程序python main.pyYOLOv8-Pose可轻松构建高性能人体姿态估计系统支持多模态输入具备工业级应用潜力。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询