引言
在PyQT5中引用OpenMV2023版本支持SDK,实现二次开发使用。OpenMV算法层已经开放SDK调用支持,从图像处理、分析、测量到深度学习推理全部支持SDK调用方式实现第三方应用与程序集成。
图像分析SDK支持
YOLOv8推理SDK支持
OpenMV中YOLOv8推理支持包导入,从dlcore包中导入:
from dlcore.dl_infer_settings import DLInferSettings from dlcore.yolov8_vino_ort_infer import YOLOv8DetectorOpenCV库导入支持
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文档。
综合代码演示
灰度
YOLOv8推理
相关实现代码如下:
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
+关注
关注
3文章
659浏览量
39654 -
SDK
+关注
关注
3文章
1035浏览量
45902 -
pyqt5
+关注
关注
0文章
25浏览量
3398 -
openMV
+关注
关注
3文章
39浏览量
9810
原文标题:PyQT5构建YOLOv8界面应用程序
文章出处:【微信号:CVSCHOOL,微信公众号:OpenCV学堂】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
相关推荐
利用PyQt5编辑软件界面的简单步骤
的操作以及利用PyQt5编辑软件界面的简单步骤。实现难度不大,但需要运行第二线程运行输出脉冲的程序。 首先,推荐一下PyQt5和Eric6的学习资料...
发表于 09-16 07:48
如何使用Python配合PyQT5模块来开发图形化应用程序
By Toradex秦海1).简介随着Python在互联网人工智能领域的流行,大家也慢慢感受到Python开发的便利,本文就基于嵌入式ARM平台,介绍使用Python配合PyQT5模块来开发图形化
发表于 12-24 06:41
PyQt5的中文教程电子书免费下载
本教程的目的是带领你入门PyQt5。教程内所有代码都在Linux上测试通过。PyQt4 教程是PyQt4的教程,PyQt4是一个Python(同时支持 2和3)版的Qt库。
发表于 08-06 08:00
•18次下载
使用pycharm开发上位机配置pyqt5的环境
在上位机的开发过程中,使用QT的图形化界面,是开发上位机最好最简单的选择,因此我将讲述配置pyqt5的环境。
软件安装: 安装:pycharm的社区2021.02版 QT(安装参考https
发表于 05-29 16:12
•0次下载
如何实现YOLOv8 + ONNRUNTIME推理界面化与多线程支持
2023年一月份跟二月份创建了一个PyQT5人工智能软件开发系列的文章系列,过去的两个月都没怎么更新,心里一直想有时间继续更新下去,今天又更新了一篇,基于PyQT5实现多线程、界面化、YOLO
目标检测算法再升级!YOLOv8保姆级教程一键体验
YOLO作为一种基于图像全局信息进行预测的目标检测系统,始终保持着极高的迭代更新率,从YOLOv5到YOLOv8,本次升级主要包括结构算法、命令行界面、PythonAPI等。具体到YOLOv8
三种主流模型部署框架YOLOv8推理演示
深度学习模型部署有OpenVINO、ONNXRUNTIME、TensorRT三个主流框架,均支持Python与C++的SDK使用。对YOLOv5~YOLOv8的系列模型,均可以通过C++推理实现模型
如何修改YOLOv8的源码
很多人也想跟修改YOLOv5源码一样的方式去修改YOLOv8的源码,但是在github上面却发现找到的YOLOv8项目下面TAG分支是空的,然后就直接从master/main下面把源码克隆出来一通
基于PyQT5与ONNXRUNTIME实现风格迁移应用
2023年一月份跟二月份创建了一个PyQT5人工智能软件开发系列的文章系列,过去的两个月都没怎么更新,心里一直想有时间继续更新下去,今天又更新了一篇,基于PyQT5实现多线程、界面化、风格迁移模型的实时推理。
如何快速开发出功能强大、界面美观的GUI 应用程序
平台的 GUI 应用程序 相比 Tkiner和 wxpython,PyQt5 利用自带的 Qt Designer 可视化工具进行界面设计,可以非常快速地开发出一款功能强大、界面美观的
基于YOLOv8的自定义医学图像分割
YOLOv8是一种令人惊叹的分割模型;它易于训练、测试和部署。在本教程中,我们将学习如何在自定义数据集上使用YOLOv8。但在此之前,我想告诉你为什么在存在其他优秀的分割模型时应该使用YOLOv8呢?
YOLOv8+PyQT5打造细胞计数与识别应用说明
YOLOv8对象检测模型基于自定义数据集训练红白细胞检测模型,然后通过工具导出模型为ONNX,基于OpenVINO实现模型推理,完成细胞检测识别,根据检测到的细胞类别与数目,统计,在PyQT5打造的界面上显示输出检测结果。
评论