0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

请问PyQT5是如何构建YOLOv8界面应用程序的

OpenCV学堂 来源:OpenCV开发者联盟 作者:2号高手 2023-02-14 17:07 次阅读

引言

在PyQT5中引用OpenMV2023版本支持SDK,实现二次开发使用。OpenMV算法层已经开放SDK调用支持,从图像处理、分析、测量到深度学习推理全部支持SDK调用方式实现第三方应用与程序集成。

图像分析SDK支持

da687132-ac41-11ed-bfe3-dac502259ad0.png

YOLOv8推理SDK支持

OpenMV中YOLOv8推理支持包导入,从dlcore包中导入:

from dlcore.dl_infer_settings import DLInferSettings
from dlcore.yolov8_vino_ort_infer import YOLOv8Detector
OpenCV库导入支持
import cv2 as cv
然后完成下面的代码
settings = DLInferSettings()
settings.weight_file_path = self.weight_file_path.text()
settings.label_map_file_path = "D:/projects/classes.txt"
settings.target_deploy = 1
detector = YOLOv8Detector(settings)
image = cv.imread(image_file)
detector.infer_image(image)
cv.waitKey("result", image)
即可实现YOLOv8图像推理与结果显示。 关于OpenMVSDK支持与上述更详细的资料参考见《Open Machine Vision Toolkit Software2023.1开发者手册》PDF文档。

综合代码演示

da8ddb48-ac41-11ed-bfe3-dac502259ad0.png

灰度

dad781f8-ac41-11ed-bfe3-dac502259ad0.png

YOLOv8推理

daeccf18-ac41-11ed-bfe3-dac502259ad0.png

相关实现代码如下:

  1fromdlcore.yolov8_vino_ort_inferimportYOLOv8Detector
  2fromdlcore.dl_infer_settingsimportDLInferSettings
  3importcv2ascv
  4fromPyQt5importQtWidgets,QtCore,QtGui
  5fromvmcore.color_space_taskimportColorSpaceTask
  6importsys
  7
  8
  9classRadioCheckBoxDemoPanel(QtWidgets.QWidget):
 10def__init__(self,parent=None):
 11super().__init__(parent)
 12#文本标签
 13self.rbtn0=QtWidgets.QRadioButton("原图")
 14self.rbtn1=QtWidgets.QRadioButton("灰度")
 15self.rbtn3=QtWidgets.QRadioButton("YOLOv8推理")
 16self.rbtn0.setChecked(True)
 17
 18hbox_layout1=QtWidgets.QHBoxLayout()
 19hbox_layout1.addWidget(self.rbtn0)
 20hbox_layout1.addWidget(self.rbtn1)
 21hbox_layout1.addWidget(self.rbtn3)
 22
 23panel1=QtWidgets.QGroupBox("SDK演示")
 24panel1.setLayout(hbox_layout1)
 25
 26#输入文本框
 27self.image_file_edit=QtWidgets.QLineEdit()
 28self.image_file_edit.setMinimumWidth(100)
 29self.image_file_edit.setEnabled(False)
 30fileBtn=QtWidgets.QPushButton("图像")
 31self.weight_file_path=QtWidgets.QLineEdit()
 32self.weight_file_path.setMinimumWidth(100)
 33self.weight_file_path.setEnabled(False)
 34modelBtn=QtWidgets.QPushButton("模型")
 35
 36hbox_layout2=QtWidgets.QHBoxLayout()
 37hbox_layout2.addWidget(fileBtn)
 38hbox_layout2.addWidget(self.image_file_edit)
 39hbox_layout2.addWidget(modelBtn)
 40hbox_layout2.addWidget(self.weight_file_path)
 41
 42panel2=QtWidgets.QGroupBox("参数文件")
 43panel2.setLayout(hbox_layout2)
 44
 45#输入文本框
 46self.label=QtWidgets.QLabel()
 47pixmap=QtGui.QPixmap("images/wp.jpg")
 48pix=pixmap.scaled(QtCore.QSize(620,500),QtCore.Qt.KeepAspectRatio)
 49self.label.setPixmap(pix)
 50self.label.setAlignment(QtCore.Qt.AlignCenter)
 51self.label.setStyleSheet("background-color:black;color:green")
 52
 53#添加到布局管理器中
 54vbox_layout=QtWidgets.QVBoxLayout()
 55vbox_layout.addWidget(panel2)
 56vbox_layout.addWidget(panel1)
 57vbox_layout.addWidget(self.label)
 58vbox_layout.addStretch(1)
 59
 60#面板容器
 61self.setLayout(vbox_layout)
 62
 63#setuplistener
 64self.rbtn0.toggled.connect(self.on_update_original)
 65self.rbtn1.toggled.connect(self.on_update_gray)
 66self.rbtn3.toggled.connect(self.on_yolov8_infer)
 67modelBtn.clicked.connect(self.on_weight_select)
 68fileBtn.clicked.connect(self.on_update_image)
 69
 70defon_update_original(self):
 71image_file=self.image_file_edit.text()
 72iflen(image_file)==0orimage_fileisNone:
 73QtWidgets.QMessageBox.warning(self,"警告","图像文件未选择...")
 74return
 75pixmap=QtGui.QPixmap(image_file)
 76pix=pixmap.scaled(QtCore.QSize(620,500),QtCore.Qt.KeepAspectRatio)
 77self.label.setPixmap(pix)
 78
 79defon_update_gray(self):
 80image_file=self.image_file_edit.text()
 81iflen(image_file)==0orimage_fileisNone:
 82QtWidgets.QMessageBox.warning(self,"警告","图像文件未选择...")
 83return
 84image=cv.imread(image_file)
 85cst=ColorSpaceTask()
 86cst.low_scalar=(0,0,0)
 87cst.high_scalar=(0,0,0)
 88#0-BGR,1-HSV,2-gray
 89cst.color_type=2
 90output=cst.t_exec(image)
 91gray=output['result']
 92dst=cv.cvtColor(gray,cv.COLOR_GRAY2RGB)
 93
 94height,width,channel=dst.shape
 95bytesPerLine=3*width
 96img=QtGui.QImage(dst.data,width,height,bytesPerLine,QtGui.QImage.Format_RGB888)
 97pixmap=QtGui.QPixmap(img)
 98pix=pixmap.scaled(QtCore.QSize(620,500),QtCore.Qt.KeepAspectRatio)
 99self.label.setPixmap(pix)
100
101defon_yolov8_infer(self):
102image_file=self.image_file_edit.text()
103iflen(image_file)==0orimage_fileisNone:
104QtWidgets.QMessageBox.warning(self,"警告","图像文件未选择...")
105return
106
107settings=DLInferSettings()
108settings.weight_file_path=self.weight_file_path.text()
109settings.label_map_file_path="D:/projects/classes.txt"
110settings.target_deploy=1
111detector=YOLOv8Detector(settings)
112image=cv.imread(image_file)
113detector.infer_image(image)
114
115dst=cv.cvtColor(image,cv.COLOR_BGR2RGB)
116height,width,channel=dst.shape
117bytesPerLine=3*width
118img=QtGui.QImage(dst.data,width,height,bytesPerLine,QtGui.QImage.Format_RGB888)
119pixmap=QtGui.QPixmap(img)
120pix=pixmap.scaled(QtCore.QSize(620,500),QtCore.Qt.KeepAspectRatio)
121self.label.setPixmap(pix)





审核编辑:刘清

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • GUI
    GUI
    +关注

    关注

    3

    文章

    611

    浏览量

    38793
  • SDK
    SDK
    +关注

    关注

    3

    文章

    966

    浏览量

    44708
  • pyqt5
    +关注

    关注

    0

    文章

    25

    浏览量

    3361
  • openMV
    +关注

    关注

    3

    文章

    29

    浏览量

    9681

原文标题:PyQT5构建YOLOv8界面应用程序

文章出处:【微信号:CVSCHOOL,微信公众号:OpenCV学堂】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    【Firefly RK3399试用体验】第二篇:PyQt5大战点灯

    ;/sys/class/leds/ firefly:yellow:use/brightness//黄灯亮之后对PyQt5的安装做一下介绍,ubuntu的包管理安装PyQt5时会自动安装依赖的Python等
    发表于 06-12 07:49

    Dragonbaord 410c Python交互设计:利用pyQt搭建交互程序界面

    ,今天将进一步以一个天气预报的经典demo的UI设计为例教大家如何利用pyQt来搭建自己的交互程序界面。上期blog中只是教大家在410c上简单的调用了pyqt提供的接口来完成了简单的
    发表于 09-25 15:07

    利用PyQt5编辑软件界面的简单步骤

    的操作以及利用PyQt5编辑软件界面的简单步骤。实现难度不大,但需要运行第二线程运行输出脉冲的程序。 首先,推荐一下PyQt5和Eric6的学习资料...
    发表于 09-16 07:48

    如何使用Python配合PyQT5模块来开发图形化应用程序

    By Toradex秦海1).简介随着Python在互联网人工智能领域的流行,大家也慢慢感受到Python开发的便利,本文就基于嵌入式ARM平台,介绍使用Python配合PyQT5模块来开发图形化
    发表于 12-24 06:41

    鲁班猫0 ubuntu20 解决python3.10安装pyqt5

    前面用pip install pyqt5,总是安装不成功。经查阅资料,最后用:udo apt install python3-pyqt5成功安装cat@lubancat:~$
    发表于 04-09 11:04

    【爱芯派 Pro 开发板试用体验】yolov8模型转换

    通过开发板上预制的ax_run_model 工具,测试模型速度和精度。 示例都是yolov5的,没有yolov8,模型怎么运行还需进一步研究。
    发表于 11-20 12:19

    PyQt5的中文教程电子书免费下载

     本教程的目的是带领你入门PyQt5。教程内所有代码都在Linux上测试通过。PyQt4 教程是PyQt4的教程,PyQt4是一个Python(同时支持 2和3)版的Qt库。
    发表于 08-06 08:00 11次下载
    <b class='flag-5'>PyQt5</b>的中文教程电子书免费下载

    PyQT多线程正确的调用方式

    我这两天一直想把YOLOv5上加个训练的界面,把控制台的输出重定向到一个PyQT5写的界面上,然后我很顺序的写好了一个简单的测试,发现可以重定向了,一直实时获取输出了。
    的头像 发表于 08-29 10:24 1744次阅读

    如何实现YOLOv8 + ONNRUNTIME推理界面化与多线程支持

    2023年一月份跟二月份创建了一个PyQT5人工智能软件开发系列的文章系列,过去的两个月都没怎么更新,心里一直想有时间继续更新下去,今天又更新了一篇,基于PyQT5实现多线程、界面化、YOLO
    的头像 发表于 05-22 09:26 1471次阅读
    如何实现<b class='flag-5'>YOLOv8</b> + ONNRUNTIME推理<b class='flag-5'>界面</b>化与多线程支持

    PyQT5案例开发

    基于YOLOv8对象检测/实例分割模型,实现一个基于检测的对象跟踪算法,YOLOv8支持两种主流的对象跟踪算法ByteTrack与Botsort。
    的头像 发表于 05-25 09:46 365次阅读
    <b class='flag-5'>PyQT5</b>案例开发

    解锁YOLOv8修改+注意力模块训练与部署流程

    很多人也想跟修改YOLOv5源码一样的方式去修改YOLOv8的源码,但是在github上面却发现找到的YOLOv8项目下面TAG分支是空的
    的头像 发表于 08-11 14:14 2675次阅读
    解锁<b class='flag-5'>YOLOv8</b>修改+注意力模块训练与部署流程

    基于PyQT5与ONNXRUNTIME实现风格迁移应用

    2023年一月份跟二月份创建了一个PyQT5人工智能软件开发系列的文章系列,过去的两个月都没怎么更新,心里一直想有时间继续更新下去,今天又更新了一篇,基于PyQT5实现多线程、界面化、风格迁移模型的实时推理。
    的头像 发表于 10-25 10:35 271次阅读
    基于<b class='flag-5'>PyQT5</b>与ONNXRUNTIME实现风格迁移应用

    如何快速开发出功能强大、界面美观的GUI 应用程序

    跨平台的 GUI 应用程序 相比 Tkiner和 wxpython,PyQt5 利用自带的 Qt Designer 可视化工具进行界面设计,可以非常快速地开发出一款功能强大、界面美观的
    的头像 发表于 11-02 14:45 1508次阅读
    如何快速开发出功能强大、<b class='flag-5'>界面</b>美观的GUI <b class='flag-5'>应用程序</b>

    基于YOLOv8的自定义医学图像分割

    YOLOv8是一种令人惊叹的分割模型;它易于训练、测试和部署。在本教程中,我们将学习如何在自定义数据集上使用YOLOv8。但在此之前,我想告诉你为什么在存在其他优秀的分割模型时应该使用YOLOv8呢?
    的头像 发表于 12-20 10:51 410次阅读
    基于<b class='flag-5'>YOLOv8</b>的自定义医学图像分割

    YOLOv8+PyQT5打造细胞计数与识别应用说明

    YOLOv8对象检测模型基于自定义数据集训练红白细胞检测模型,然后通过工具导出模型为ONNX,基于OpenVINO实现模型推理,完成细胞检测识别,根据检测到的细胞类别与数目,统计,在PyQT5打造的界面上显示输出检测结果。
    的头像 发表于 01-15 17:22 541次阅读
    <b class='flag-5'>YOLOv8+PyQT</b>5打造细胞计数与识别应用说明