您的位置:首页 > 文旅 > 旅游 > 网站制作在哪里比较好_海口网络推广_推广引流的10个渠道_微信小程序开发工具

网站制作在哪里比较好_海口网络推广_推广引流的10个渠道_微信小程序开发工具

2025/2/27 1:02:40 来源:https://blog.csdn.net/weixin_71719718/article/details/145795916  浏览:    关键词:网站制作在哪里比较好_海口网络推广_推广引流的10个渠道_微信小程序开发工具
网站制作在哪里比较好_海口网络推广_推广引流的10个渠道_微信小程序开发工具

首先建立的界面效果如下:

        以上界面中,检测图1是yolov8模型检测得到的图片显示,检测图2是deeplabv3模型检测处理后得到的图片;下面检测数量是两个模型分别检测到的目标数量(图片中人的个数);右上角的相同是指两个模型的检测数量是否相同,若相同则显示"true",否则显示“false”。下面简单介绍该功能实现的步骤。

1.实现步骤

一、 读取图片

二、yolov8检测图片,得到检测结果(图片、类名称、目标数量)

四、deeplabv3检测图片,得到检测结果(图片、类名称、目标数量)

五、designer界面显示检测的结果

2.designer功能的实现

一、安装Qt Designer

在虚拟环境下终端运行以下代码即可

pip install PyQt5
pip install pyqt5-tools

其他操作步骤可以看博客:Qt Designer 详细介绍-CSDN博客。

二、将.UI文件转为.py文件

在pycharm的终端运行以下代码即可:

# 对于 PyQt5
pyuic5 -x designer.ui -o ui_designer.py
# 对于 PySide2
pyside2-uic designer.ui > ui_designer.py

修改后的结果如下:

from PyQt5 import QtCore, QtGui, QtWidgets
import cv2
import sysclass Ui_Dialog(object):def setupUi(self, Dialog):Dialog.setObjectName("Dialog")Dialog.resize(819, 632)self.start = QtWidgets.QPushButton(Dialog)self.start.setGeometry(QtCore.QRect(310, 570, 79, 23))self.start.setObjectName("start")self.finish = QtWidgets.QPushButton(Dialog)self.finish.setGeometry(QtCore.QRect(440, 570, 79, 23))self.finish.setObjectName("finish")self.detection1_text = QtWidgets.QLabel(Dialog)self.detection1_text.setGeometry(QtCore.QRect(180, 420, 61, 20))self.detection1_text.setObjectName("detection1_text")self.detection_nums1 = QtWidgets.QLabel(Dialog)self.detection_nums1.setGeometry(QtCore.QRect(120, 490, 71, 20))self.detection_nums1.setObjectName("detection_nums1")self.detection2_text = QtWidgets.QLabel(Dialog)self.detection2_text.setGeometry(QtCore.QRect(580, 420, 61, 20))self.detection2_text.setObjectName("detection2_text")self.detection_nums2 = QtWidgets.QLabel(Dialog)self.detection_nums2.setGeometry(QtCore.QRect(550, 490, 71, 20))self.detection_nums2.setObjectName("detection_nums2")self.compares = QtWidgets.QLabel(Dialog)self.compares.setGeometry(QtCore.QRect(650, 30, 41, 16))self.compares.setObjectName("compares")self.nums1 = QtWidgets.QLineEdit(Dialog)self.nums1.setGeometry(QtCore.QRect(190, 490, 71, 20))self.nums1.setObjectName("nums1")self.nums2 = QtWidgets.QLineEdit(Dialog)self.nums2.setGeometry(QtCore.QRect(630, 490, 71, 20))self.nums2.setObjectName("nums2")self.true_false = QtWidgets.QLineEdit(Dialog)self.true_false.setGeometry(QtCore.QRect(690, 30, 71, 20))self.true_false.setObjectName("true_false")self.img1 = QtWidgets.QLabel(Dialog)self.img1.setGeometry(QtCore.QRect(30, 90, 371, 311))self.img1.setAutoFillBackground(True)self.img1.setFrameShape(QtWidgets.QFrame.Box)self.img1.setFrameShadow(QtWidgets.QFrame.Sunken)self.img1.setObjectName("img1")self.img2 = QtWidgets.QLabel(Dialog)self.img2.setGeometry(QtCore.QRect(430, 90, 371, 311))self.img2.setAutoFillBackground(True)self.img2.setFrameShape(QtWidgets.QFrame.Box)self.img2.setFrameShadow(QtWidgets.QFrame.Sunken)self.img2.setObjectName("img2")self.retranslateUi(Dialog)QtCore.QMetaObject.connectSlotsByName(Dialog)def retranslateUi(self, Dialog):_translate = QtCore.QCoreApplication.translateDialog.setWindowTitle(_translate("Dialog", "目标检测"))self.start.setText(_translate("Dialog", "开始"))self.finish.setText(_translate("Dialog", "结束"))self.detection1_text.setText(_translate("Dialog", "检测图1"))self.detection_nums1.setText(_translate("Dialog", "检测数量1:"))self.detection2_text.setText(_translate("Dialog", "检测图2"))self.detection_nums2.setText(_translate("Dialog", "检测数量2:"))self.compares.setText(_translate("Dialog", "相同:"))self.img1.setText(_translate("Dialog", "显示图片"))self.img2.setText(_translate("Dialog", "显示图片"))# UI界面更新实时数据def real_time_update_paramas(self,detect_img1_nums,detect_img2_nums,true_or_false):_translate = QtCore.QCoreApplication.translateself.nums1.setText(_translate("Dialog", detect_img1_nums))# 图片1检测到的目标数量self.nums2.setText(_translate("Dialog", detect_img2_nums))# 图片2检测到的目标数量self.true_false.setText(_translate("Dialog", true_or_false))# 两个数量是否相同(true or false)# UI界面显示图片def show_img1(self,img_path1):# 显示lena图像pixmap = QtGui.QPixmap(img_path1)  # 创建相应的QPixmap对象ui.img1.setScaledContents(True)  # 设置铺满ui.img1.setPixmap(pixmap)  # 显示lena图像def show_img2(self,img_path2):# 显示lena图像pixmap = QtGui.QPixmap(img_path2)  # 创建相应的QPixmap对象ui.img2.setScaledContents(True)  # 设置铺满ui.img2.setPixmap(pixmap)  # 显示lena图像if __name__ == "__main__":# ====================>   1.建立一个UI显示界面   <====================app = QtWidgets.QApplication(sys.argv)Dialog = QtWidgets.QDialog()ui = Ui_Dialog()ui.setupUi(Dialog)# 1.基本参数显示#  下面用两种模型检测图片# 读取图片# =====================>   2.yolov8检测图片   <=====================# ===================>   3.deeplabv3检测图片   <===================# ================>   4.将两种检测结果在UI界面显示   <================# 2.检验图片的显示path1 = "D:\AI\\ultralytics-main\\tests\img3.jpg" # yolov8模型检测结果path2 = "D:\AI\\ultralytics-main\\tests\img3.jpg" # deeplabv3模型检测结果ui.show_img1(path1)ui.show_img2(path2)# 检验结果的文本显示detect_img1_nums = "1"detect_img2_nums = "1"true_or_false = "true"ui.real_time_update_paramas(detect_img1_nums,detect_img2_nums,true_or_false)Dialog.show()sys.exit(app.exec_())

注意:上面代码留出了目标检测和语义分割模型检测的功能,容易实现。

3.yolov8功能的实现

yolov8的检测不需要所有的开源文件,比如要用yolo模型时,只需要复制出yolov8文件夹下的ultralytics文件即可,并和该文件同级别写个1.preds.py的检测文件,文件内容如下:

from ultralytics import YOLO
#from PIL import Image
import cv2model = YOLO("yolov8n.pt")im2 = cv2.imread("img1.jpg")
results = model.predict(source=im2, save=True, save_txt=True)  # 将预测保存为标签
print()
for item in results:if item == "name":print(item)if item == "save_dir":print(item)if item == "path":print(item)

其实,直接运行这个文件就可以了,但我们还可以对ultralytics文件内的一些文件进行删减,因为该文件不仅仅是yolo测试,还有其他检测。

我们进入该文件夹下的models文件夹下再次删减,删减后的结果如下:

当然,删除后,该文件夹下的一些py文件需要修改:

1.下图中的__init__.py文件的修改后的内容如下:

2.下图中的__init__.py文件的修改后的内容如下:

最后运行1.preds.py的代码,结果如下:

4.deeplabv3功能的实现

该模型可以看专栏专栏管理-CSDN创作中心,比较简单。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com