news 2026/9/21 13:51:11

【Yolov8】图形化检测视频-源码免费分享

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【Yolov8】图形化检测视频-源码免费分享

如果你还不懂YOLOv8的安装、推理,自定义数据集训练与搭建的,可以看一下老师这篇文章和视频
https://blog.csdn.net/chajinglong/article/details/149105590?spm=1001.2014.3001.5501https://blog.csdn.net/chajinglong/article/details/149105590?spm=1001.2014.3001.5501

https://www.bilibili.com/video/BV1qtHeeMEnC/?spm_id_from=333.337.search-card.all.click&vd_source=27c8ea1c143ecfe9f586177e5e7027cfhttps%3A%2F%2Fwww.bilibili.com%2Fvideo%2FBV1qtHeeMEnC%2F%3Fspm_id_from%3D333.337.search-card.all.click&vd_source=27c8ea1c143ecfe9f586177e5e7027cfhttps://www.bilibili.com/video/BV1qtHeeMEnC/?spm_id_from=333.337.search-card.all.click&vd_source=27c8ea1c143ecfe9f586177e5e7027cfhttps%3A%2F%2Fwww.bilibili.com%2Fvideo%2FBV1qtHeeMEnC%2F%3Fspm_id_from%3D333.337.search-card.all.click&vd_source=27c8ea1c143ecfe9f586177e5e7027cf

很多同学问老师,这些课程能不能把文档写出来,分享到更多的人,那么今天它来了,整理成大纲给到同学们,希望能够帮助到你们,如果觉得写的可以,可以对照上面的视频和详细资料进行学习。

【YOLOv8零基础从入门到实战进阶系列教程】

https://www.bilibili.com/cheese/play/ep1342527?query_from=0&search_id=6883789517812043464&search_query=yolov8&csource=common_hpsearch_null_null&spm_id_from=333.337.search-card.all.clickhttps://www.bilibili.com/cheese/play/ep1342527?query_from=0&search_id=6883789517812043464&search_query=yolov8&csource=common_hpsearch_null_null&spm_id_from=333.337.search-card.all.click

​​

基于yolov8图形化目标检测视频(PyQt5 + ultralytics):

  1. 使用YOLO模型进行目标检测
  2. 处理图片和视频流
  3. 实现检测结果GUI可视化
import sys #用于退出程序 from PyQt5.QtCore import Qt,QTimer #这些是 PyQt5 库的模块,用于构建图形用户界面(GUI)应用程序 from PyQt5.QtWidgets import QApplication, QMainWindow, QLabel, QVBoxLayout, QWidget, QPushButton, QHBoxLayout, \ QMessageBox, QFileDialog from PyQt5.QtGui import QImage, QPixmap import cv2 #图像处理 from ultralytics import YOLO #深度学习模型接口,用于加载 YOLO(You Only Look Once)模型进行对象检测 #负责处理模型加载和图像检测的逻辑。 class Worker: def __init__(self): self.model = None #加载模型 def load_model(self): model_path, _ = QFileDialog.getOpenFileName(None, "选择模型文件", "", "模型文件 (*.pt)") if model_path: self.model = YOLO(model_path) if self.model: return True else: return False #检测图片 def detect_image(self, image_path): image = cv2.imread(image_path) if image is not None: results = self.model.predict(image) return results else: return None #打开视频 def detect_video(self, video_path): # 打开视频文件 self.cap = cv2.VideoCapture(video_path) if not self.cap.isOpened(): return False return True #获取视频标注图像 def get_frame(self): if self.cap is not None and self.cap.isOpened(): ret, frame = self.cap.read() if ret: # 使用 YOLO 进行对象检测 results = self.model.predict(frame) annotated_frame = results[0].plot() # 用检测结果标注图像 return annotated_frame return None #释放 def release(self): if self.cap: self.cap.release() #应用程序的主窗口,负责创建界面,处理用户交互和显示检测结果 class MainWindow(QMainWindow): def __init__(self): super().__init__() self.setWindowTitle("YOLOv8-GUI(图形化界面)") """ 第一个:100,左上角屏幕左边缘水平距离(像素) 第二个:100,左上角屏幕上边缘垂直距离(像素) 第三个:100,设置窗口的宽度 第四个:100,设置窗口的高度 """ self.setGeometry(100, 100, 1200, 800) self.label = QLabel() self.label.setAlignment(Qt.AlignCenter) self.label.setFixedSize(640,480) layout = QVBoxLayout() layout.addWidget(self.label) central_widget = QWidget() central_widget.setLayout(layout) self.setCentralWidget(central_widget) self.worker = Worker() # 创建按钮布局 hbox_buttons = QHBoxLayout() layout.addLayout(hbox_buttons) # 添加模型选择按钮 self.load_model_button = QPushButton("模型选择") self.load_model_button.clicked.connect(self.load_model) hbox_buttons.addWidget(self.load_model_button) # 添加图片检测按钮 self.image_detect_button = QPushButton("图片检测") self.image_detect_button.clicked.connect(self.detect_image) self.image_detect_button.setEnabled(False) hbox_buttons.addWidget(self.image_detect_button) #添加视频检测按钮 self.video_detect_button = QPushButton("视频检测") self.video_detect_button.clicked.connect(self.detect_video) self.video_detect_button.setEnabled(False) hbox_buttons.addWidget(self.video_detect_button) # 添加退出按钮 self.exit_button = QPushButton("退出") self.exit_button.clicked.connect(self.exit_application) hbox_buttons.addWidget(self.exit_button) #定时器更新视频 self.timer = QTimer(self) self.timer.timeout.connect(self.update_frame) def detect_image(self): image_path, _ = QFileDialog.getOpenFileName(None, "选择图片文件", "", "图片文件 (*.jpg *.jpeg *.png)") if image_path: results = self.worker.detect_image(image_path) if results: annotated_image = results[0].plot() height, width, channel = annotated_image.shape bytesPerLine = 3 * width qimage = QImage(annotated_image.data, width, height, bytesPerLine, QImage.Format_BGR888) pixmap = QPixmap.fromImage(qimage) self.label.setPixmap(pixmap.scaled(self.label.size(), Qt.KeepAspectRatio)) else: QMessageBox.critical(self, "错误", "请选择图片文件") #选择视频文件 def detect_video(self): video_path, _ = QFileDialog.getOpenFileName(None, "选择视频文件", "", "视频文件 (*.mp4 *.avi *.mov)") if video_path: if self.worker.detect_video(video_path): # 开始定时器逐帧处理视频 self.timer.start(30) # 每30ms更新一次 (大约每秒更新33帧) else: QMessageBox.critical(self, "错误", "无法打开视频文件") else: QMessageBox.critical(self, "错误", "请选择视频文件") #更新视频 def update_frame(self): frame = self.worker.get_frame() if frame is not None: # 获取视频帧的宽高 height, width, channel = frame.shape bytesPerLine = 3 * width qimage = QImage(frame.data, width, height, bytesPerLine, QImage.Format_BGR888) # 创建 QPixmap 并按固定尺寸显示 pixmap = QPixmap.fromImage(qimage) # 按照 Qlabel 固定的尺寸显示,保持宽高比 self.label.setPixmap(pixmap.scaled(self.label.size(), Qt.KeepAspectRatio)) else: self.timer.stop() # 停止定时器,视频播放完毕 QMessageBox.information(self, "提示", "视频播放完毕") def load_model(self): if self.worker.load_model(): self.image_detect_button.setEnabled(True) self.video_detect_button.setEnabled(True) def exit_application(self): # 终止程序运行 sys.exit() if __name__ == '__main__': app = QApplication(sys.argv) window = MainWindow() window.show() sys.exit(app.exec_())

如果这篇文章对你有所帮助,那就感谢同学的分享,转载,你们的分享是老师最大的动力

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/21 22:51:16

MZmine 3实战指南:轻松掌握质谱数据分析三大核心技巧

MZmine 3实战指南:轻松掌握质谱数据分析三大核心技巧 【免费下载链接】mzmine3 MZmine 3 source code repository 项目地址: https://gitcode.com/gh_mirrors/mz/mzmine3 还在为复杂的质谱数据分析而烦恼吗?MZmine 3作为一款功能强大的开源质谱数…

作者头像 李华
网站建设 2026/9/21 17:59:16

ScienceDecrypting:免费CAJ转PDF终极指南,轻松突破文档限制

想要摆脱CAJViewer的束缚,方便访问学术文档吗?ScienceDecrypting为您提供了完美的CAJ文档转换和PDF解密解决方案,让您轻松实现文档格式转换,彻底告别加密文档的困扰。这个开源工具专门针对科学文库、国家标准全文数据库等平台的加…

作者头像 李华
网站建设 2026/9/22 1:13:01

如何高效使用ncmdump工具完成NCM文件批量转换

想要解除网易云音乐下载文件的播放限制吗?ncmdump工具为你提供了一套完整的NCM文件转换解决方案,让你能够在任意设备和播放器上自由享受音乐。这款开源工具能够将加密的NCM格式转换为标准的MP3或FLAC文件,实现真正的音乐跨平台兼容。 【免费下…

作者头像 李华
网站建设 2026/9/21 7:55:29

SetDPI:Windows多显示器DPI调整的终极解决方案

SetDPI:Windows多显示器DPI调整的终极解决方案 【免费下载链接】SetDPI 项目地址: https://gitcode.com/gh_mirrors/se/SetDPI 在现代工作环境中,多显示器和高分辨率屏幕已成为标配,但Windows系统自带的DPI设置功能往往不够灵活。Set…

作者头像 李华
网站建设 2026/9/22 2:06:46

Kotaemon如何支持语音输入与输出转换?

Kotaemon如何支持语音输入与输出转换? 在智能对话系统日益深入企业场景的今天,用户不再满足于“打字提问、阅读回答”的交互模式。越来越多的应用期望实现像人一样“能听会说”的自然体验——你说一句话,系统立刻理解并用语音回应。这种看似简…

作者头像 李华
网站建设 2026/9/21 19:02:56

如何快速实现Vue音频播放功能:vue-audio-player终极解决方案

如何快速实现Vue音频播放功能:vue-audio-player终极解决方案 【免费下载链接】vue-audio-player Compact, simple and practical PC mobile audio player components(小巧简单实用的 PC 移动端的 Vue 音频播放器组件) 项目地址: https://gi…

作者头像 李华