欧美网址在线观看-亚洲最新毛片-国产成人免费爽爽爽视频-亚洲一区在线影院-日韩欧美在线观看视频网站-男女激情四射-成人一区二区免费看-欧美亚洲综合在线-日韩一级视频在线播放-国产成人三级视频在线播放-亚洲中文字幕日产无码2020-99久久久国产精品免费无卡顿-av在线观看地址-果冻传媒mv免费播放在线观看-欧美在线观看视频免费-日韩天天操

聯系我們 - 廣告服務 - 聯系電話:
您的當前位置: > 關注 > > 正文

看熱訊:QT部署YOLOV5 pyqt5搭建YOLOV5的檢測平臺

來源:CSDN 時間:2022-12-20 15:07:07

文章目錄

前言一、準備工作1、代碼下載2、環境安裝2.1、安裝PyQt52.2、安裝Qt Designer圖形界面開發工具2.3、pycharm配置 3、模型準備 二、界面展示1.界面大致如下 三、效果展示1、圖片效果展示如下:2、攝像頭或視頻檢測 四、整體代碼:總結

前言


(資料圖片)

這篇文章主要用來記錄用pyqt5搭建YOLOV5的檢測平臺,代碼是在yoloV5官方代碼上加了個qt模塊,目前可以支持GPU/CPU下pt/onnx推理。

一、準備工作

1、代碼下載

2、環境安裝

根據代碼中的requirements.txt進行環境搭建,前提是你已有Python環境

pip install -r requirements.txt

這里需要注意的是,pyqt5需要配置下環境,參考連接為:安裝pyqt5,步驟如下:

2.1、安裝PyQt5

pip install PyQt5

2.2、安裝Qt Designer圖形界面開發工具

pip install PyQt5-tools

安裝完成后,會在當前環境目錄下生成如下文件

2.3、pycharm配置

先配置Qt Designer 參數如下: Name:Qt Designer。方便記憶。實際可以任意取值。

Program:designer.exe程序絕對路徑。根據實際安裝路徑填寫,參考路徑為安裝的xxxx/Lib/sit-packages/qt5_applications\Qt\bin\designer.exe(其中xxxx為虛擬環境目錄下)。 Working directory: $ProjectFileDir$。固定取值。

配置PyUIC,該工具是用于將Qt Designer工具開發完成的.ui文件轉化為.py文件。配置打開路徑同Qt Designer。參數配置說明: Name:PyUIC。方便記憶。實際可以任意取值。 Program:python.exe程序絕對路徑。根據實際安裝路徑填寫。 Parameters:-m PyQt5.uic.pyuic $FileName$ -o $FileNameWithoutExtension$.py。固定取值。 Working directory: $FileDir$。固定取值。

3、模型準備

根據readme.md文件中的地址選擇對應的模型下載,如圖:

本文直接以yolov5s.pt進行示范

二、界面展示

1.界面大致如下

代碼如下(示例):

class Ui_Form(QtWidgets.QWidget):    def setupUi(self, Form):        Form.setObjectName("Form")        Form.resize(1130, 730)        self.stride=64        #檢測結果展示區        self.label2 = QtWidgets.QLabel(Form)        self.label2.setGeometry(QtCore.QRect(650, 410, 300, 300))        self.label2.setAlignment(QtCore.Qt.AlignCenter)        self.label2.setStyleSheet("border: 1px solid black;")        self.label2.setObjectName("label2")        #圖片或視頻路徑選擇        self.pushButton = QtWidgets.QPushButton(Form)        self.pushButton.setGeometry(QtCore.QRect(50, 310, 160, 30))        self.pushButton.setStyleSheet("font: 15pt \"宋體\";\n""border:1px solid black;\n""background-color:#e1e1e1;")        self.pushButton.setChecked(False)  # 設置開始時的狀態為未選中        self.pushButton.clicked.connect(lambda :self.select_file())        self.pushButton.setObjectName("pushButton")  #圖片選擇按鈕        #模式選擇        self.comboBox = QtWidgets.QComboBox(Form)        self.comboBox.setGeometry(QtCore.QRect(50, 260, 160, 30))        self.comboBox.setStyleSheet("font: 15pt \"宋體\";\n""border:1px solid black;\n""background-color:#e1e1e1;")        self.comboBox.setPlaceholderText("")        self.comboBox.setObjectName("comboBox")        self.comboBox.addItem("")        self.comboBox.addItem("")        self.comboBox.addItem("")        self.comboBox.addItem("")        self.comboBox.currentIndexChanged.connect(lambda :self.select_mode())        #開始檢測按鈕        self.pushButton_2 = QtWidgets.QPushButton(Form)        self.pushButton_2.setGeometry(QtCore.QRect(190, 610, 100, 70))        self.pushButton_2.setStyleSheet("font: 15pt \"宋體\";\n""border:1px solid black;\n""background-color:#e1e1e1;")        self.pushButton_2.setObjectName("pushButton_2")        self.pushButton_2.setChecked(False)        self.pushButton_2.clicked.connect(lambda :self.vim_show())        self.pushButton_3 = QtWidgets.QPushButton(Form)        self.pushButton_3.setGeometry(QtCore.QRect(50, 210, 160, 30))        self.pushButton_3.setStyleSheet("font: 15pt \"宋體\";\n""border:1px solid black;\n""background-color:#e1e1e1;")        self.pushButton_3.setObjectName("pushButton_3")        self.pushButton_3.setChecked(False) # 設置開始時的狀態為未選中        self.pushButton_3.clicked.connect(lambda :self.select_modelfile())        self.pushButton_7 = QtWidgets.QPushButton(Form)        self.pushButton_7.setGeometry(QtCore.QRect(50, 550, 160, 30))        self.pushButton_7.setStyleSheet("font: 15pt \"宋體\";\n"                                        "border:1px solid black;\n"                                        "background-color:#e1e1e1;")        self.pushButton_7.setObjectName("pushButton_7")        self.lineEdit_2=QtWidgets.QLineEdit(Form)        self.lineEdit_2.setGeometry(QtCore.QRect(230, 550, 220, 30))        self.lineEdit_2.setStyleSheet("border: 1px solid black;")        self.lineEdit_2.setObjectName("lineEdit_2")        self.label1=QtWidgets.QLabel(Form)        self.label1.setGeometry(QtCore.QRect(650, 100, 300, 300))        self.label2.setAlignment(QtCore.Qt.AlignCenter)        self.label1.setStyleSheet("border: 1px solid black;")        self.label1.setObjectName("label1")        self.textEdit = QtWidgets.QTextEdit(Form)        self.textEdit.setGeometry(QtCore.QRect(600, 100, 40, 300))        self.textEdit.setLayoutDirection(QtCore.Qt.LeftToRight)        self.textEdit.setStyleSheet("border: 1px solid black;\n""font: 15pt \"宋體\";")        self.textEdit.setObjectName("textEdit")        self.textEdit_2 = QtWidgets.QTextEdit(Form)        self.textEdit_2.setGeometry(QtCore.QRect(600, 410, 40, 300))        self.textEdit_2.setStyleSheet("border: 1px solid black;\n""font: 15pt \"宋體\";")        self.textEdit_2.setAlignment(QtCore.Qt.AlignHCenter)        self.textEdit_2.setObjectName("textEdit_2")        self.tableWidget = QtWidgets.QTableWidget(Form)        self.tableWidget.setGeometry(QtCore.QRect(230, 370, 221, 170))        self.tableWidget.setStyleSheet("font: 15pt \"宋體\";\n""")        self.tableWidget.setObjectName("tableWidget")        self.tableWidget.setColumnCount(1)        self.tableWidget.setRowCount(4)        item = QtWidgets.QTableWidgetItem()        self.tableWidget.setVerticalHeaderItem(0, item)        item = QtWidgets.QTableWidgetItem()        self.tableWidget.setVerticalHeaderItem(1, item)        item = QtWidgets.QTableWidgetItem()        self.tableWidget.setVerticalHeaderItem(2, item)        item = QtWidgets.QTableWidgetItem()        self.tableWidget.setVerticalHeaderItem(3, item)        item = QtWidgets.QTableWidgetItem()        self.tableWidget.setHorizontalHeaderItem(0, item)        self.tableWidget.horizontalHeader().setDefaultSectionSize(100)        self.tableWidget.horizontalHeader().setMinimumSectionSize(100)        self.tableWidget.verticalHeader().setDefaultSectionSize(30)        self.lineEdit_3 = QtWidgets.QLineEdit(Form)        self.lineEdit_3.setGeometry(QtCore.QRect(230, 210, 220, 30))        self.lineEdit_3.setStyleSheet("border: 1px solid black;")        self.lineEdit_3.setObjectName("lineEdit_3")        self.lineEdit_4 = QtWidgets.QLineEdit(Form)        self.lineEdit_4.setGeometry(QtCore.QRect(230, 260, 220, 30))        self.lineEdit_4.setStyleSheet("border: 1px solid black;")        self.lineEdit_4.setObjectName("lineEdit_4")        self.widget_3 = QtWidgets.QWidget(Form)        self.widget_3.setGeometry(QtCore.QRect(20, 30, 460, 690))        self.widget_3.setStyleSheet("border : 1px solid black;")        self.widget_3.setObjectName("widget_3")        self.lineEdit_5 = QtWidgets.QLineEdit(self.widget_3)        self.lineEdit_5.setGeometry(QtCore.QRect(90, 20, 261, 51))        self.lineEdit_5.setStyleSheet("font: 16pt \"宋體\";")        self.lineEdit_5.setAlignment(QtCore.Qt.AlignCenter)        self.lineEdit_5.setObjectName("lineEdit_5")        self.lineEdit_7 = QtWidgets.QLineEdit(self.widget_3)        self.lineEdit_7.setGeometry(QtCore.QRect(210, 280, 220, 30))        self.lineEdit_7.setStyleSheet("border: 1px solid black;")        self.lineEdit_7.setObjectName("lineEdit_7")        self.pushButton_4 = QtWidgets.QPushButton(self.widget_3)        self.pushButton_4.setGeometry(QtCore.QRect(30, 410, 160, 61))        self.pushButton_4.setStyleSheet("font: 15pt \"宋體\";\n""background-color:#e1e1e1;")        self.pushButton_4.setObjectName("pushButton_4")        #參數確認按鈕        self.pushButton_5 = QtWidgets.QPushButton(Form)        self.pushButton_5.setGeometry(QtCore.QRect(50, 610, 100, 70))        self.pushButton_5.setStyleSheet("font: 15pt \"宋體\";\n""border:1px solid black;\n""background-color:#e1e1e1;")        self.pushButton_5.setObjectName("pushButton_5")        self.pushButton_5.setChecked(False)        self.pushButton_5.clicked.connect(lambda: self.param_show())        #結束檢測按鈕        self.pushButton_6 = QtWidgets.QPushButton(Form)        self.pushButton_6.setGeometry(QtCore.QRect(330, 610, 100, 70))        self.pushButton_6.setStyleSheet("font: 15pt \"宋體\";\n"                                        "border:1px solid black;\n"                                        "background-color:#e1e1e1;")        self.pushButton_6.setObjectName("pushButton_6")        self.pushButton_6.setChecked(False)        self.pushButton_6.clicked.connect(lambda: self.end_detect())        self.lineEdit_8 = QtWidgets.QLineEdit(self.widget_3)        self.lineEdit_8.setGeometry(QtCore.QRect(210, 120, 220, 30))        self.lineEdit_8.setStyleSheet("border: 1px solid black;")        self.lineEdit_8.setObjectName("lineEdit_8")        self.comboBox_2 = QtWidgets.QComboBox(self.widget_3)        self.comboBox_2.setGeometry(QtCore.QRect(30, 120, 160, 30))        self.comboBox_2.setStyleSheet("font: 15pt \"宋體\";\n""background-color:#e1e1e1;")        self.comboBox_2.setPlaceholderText("")        self.comboBox_2.setObjectName("comboBox_2")        self.comboBox_2.currentIndexChanged.connect(lambda : self.select_device())        self.comboBox_2.addItem("")        self.comboBox_2.addItem("")        self.comboBox_2.addItem("")        self.lineEdit_5.raise_()        self.lineEdit_7.raise_()        self.lineEdit_8.raise_()        self.comboBox_2.raise_()        self.pushButton_4.raise_()        self.widget_4 = QtWidgets.QWidget(Form)        self.widget_4.setGeometry(QtCore.QRect(530, 30, 510, 690))        self.widget_4.setStyleSheet("border:1px solid black;")        self.widget_4.setObjectName("widget_4")        self.lineEdit_6 = QtWidgets.QLineEdit(self.widget_4)        self.lineEdit_6.setGeometry(QtCore.QRect(70, 10, 350, 50))        self.lineEdit_6.setStyleSheet("font: 16pt \"宋體\";")        self.lineEdit_6.setAlignment(QtCore.Qt.AlignCenter)        self.lineEdit_6.setObjectName("lineEdit_6")        self.widget_4.raise_()        self.widget_3.raise_()        self.label2.raise_()        self.pushButton.raise_()        self.comboBox.raise_()        self.pushButton_3.raise_()        self.label1.raise_()        self.textEdit.raise_()        self.textEdit_2.raise_()        self.tableWidget.raise_()        self.lineEdit_3.raise_()        self.lineEdit_4.raise_()        self.pushButton_2.raise_()        self.pushButton_5.raise_()        self.pushButton_6.raise_()        self.pushButton_7.raise_()        self.lineEdit_2.raise_()        self.retranslateUi(Form)        QtCore.QMetaObject.connectSlotsByName(Form)    def retranslateUi(self, Form):        _translate = QtCore.QCoreApplication.translate        Form.setWindowTitle(_translate("Form", "YOLOV5檢測"))        self.pushButton.setText(_translate("Form", "選擇文件"))        self.pushButton_7.setText(_translate("Form", "是否結束"))        self.comboBox.setItemText(0, _translate("Form", "檢測方式"))        self.comboBox.setItemText(1, _translate("Form", "圖片檢測"))        self.comboBox.setItemText(2, _translate("Form", "視頻檢測"))        self.comboBox.setItemText(3, _translate("Form", "攝像頭檢測"))        self.pushButton_2.setText(_translate("Form", "開始檢測"))        self.pushButton_5.setText(_translate("Form", "確定"))        self.pushButton_6.setText(_translate("Form", "結束程序"))        self.pushButton_3.setText(_translate("Form", "模型路徑"))        self.textEdit.setText(_translate("Form", "\n原\n始\n圖\n片\n/\n視\n頻"))        self.textEdit_2.setText(_translate("Form", "\n\n\n測\n試\n結\n果"))        item = self.tableWidget.verticalHeaderItem(0)        item.setText(_translate("Form", "imgsize"))        item = self.tableWidget.verticalHeaderItem(1)        item.setText(_translate("Form", "conf"))        item = self.tableWidget.verticalHeaderItem(2)        item.setText(_translate("Form", "iou"))        item = self.tableWidget.verticalHeaderItem(3)        item.setText(_translate("Form", "dnn"))        item = self.tableWidget.horizontalHeaderItem(0)        item.setText(_translate("Form", "數值"))        self.tableWidget.setItem(0,0,QtWidgets.QTableWidgetItem("640")) #圖片大小默認值        self.tableWidget.setItem(0,1,QtWidgets.QTableWidgetItem("0.25")) #置信度閾值默認值        self.tableWidget.setItem(0,2,QtWidgets.QTableWidgetItem("0.45")) #IOU閾值默認值        self.tableWidget.setItem(0,3,QtWidgets.QTableWidgetItem("False")) #IOU閾值默認值        self.lineEdit_3.setPlaceholderText(_translate("Form", "模型的路徑"))        self.lineEdit_4.setPlaceholderText(_translate("Form", "圖片或視頻檢測及攝像頭檢測"))        self.lineEdit_5.setText(_translate("Form", "參數設置及可視化"))        self.lineEdit_7.setPlaceholderText(_translate("Form", "圖片或視頻路徑"))        self.pushButton_4.setText(_translate("Form", "其他參數"))        self.lineEdit_8.setPlaceholderText(_translate("Form", "運行設備(CPU或GPU)"))        self.comboBox_2.setItemText(0, _translate("Form", "設備選擇"))        self.comboBox_2.setItemText(1, _translate("Form", "CPU"))        self.comboBox_2.setItemText(2, _translate("Form", "GPU"))        self.lineEdit_6.setText(_translate("Form", "圖片及測試結果可視化"))        self.lineEdit_2.setPlaceholderText(_translate("Form", "是否關閉視頻或者攝像頭"))

三、效果展示

1、圖片效果展示如下:

2、攝像頭或視頻檢測

四、整體代碼:

若界面太大或太小,就自己添加些代碼,將界面自適應電腦,或者手動修改代碼33行。

# -*- coding: utf-8 -*-# Form implementation generated from reading ui file "det.ui"## Created by: PyQt5 UI code generator 5.15.4## WARNING: Any manual changes made to this file will be lost when pyuic5 is# run again.  Do not edit this file unless you know what you are doing.import sysimport osroot_path=os.path.abspath(os.path.join(os.path.dirname(__file__),".."))sys.path.append(root_path)from PyQt5 import QtCore, QtGui, QtWidgetsimport torchimport cv2from PIL import Image,ImageQtimport numpy as npfrom utils.general import non_max_suppressionfrom utils.general import check_img_size,scale_coordsfrom utils.augmentations import letterboximport osfrom pathlib import Pathfrom utils.plots import Annotator,colorsfrom models.experimental import attempt_loadclass Ui_Form(QtWidgets.QWidget):    def setupUi(self, Form):        Form.setObjectName("Form")        Form.resize(1130, 730)        self.stride=64        #檢測結果展示區        self.label2 = QtWidgets.QLabel(Form)        self.label2.setGeometry(QtCore.QRect(650, 410, 300, 300))        self.label2.setAlignment(QtCore.Qt.AlignCenter)        self.label2.setStyleSheet("border: 1px solid black;")        self.label2.setObjectName("label2")        #圖片或視頻路徑選擇        self.pushButton = QtWidgets.QPushButton(Form)        self.pushButton.setGeometry(QtCore.QRect(50, 310, 160, 30))        self.pushButton.setStyleSheet("font: 15pt \"宋體\";\n""border:1px solid black;\n""background-color:#e1e1e1;")        self.pushButton.setChecked(False)  # 設置開始時的狀態為未選中        self.pushButton.clicked.connect(lambda :self.select_file())        self.pushButton.setObjectName("pushButton")  #圖片選擇按鈕        #模式選擇        self.comboBox = QtWidgets.QComboBox(Form)        self.comboBox.setGeometry(QtCore.QRect(50, 260, 160, 30))        self.comboBox.setStyleSheet("font: 15pt \"宋體\";\n""border:1px solid black;\n""background-color:#e1e1e1;")        self.comboBox.setPlaceholderText("")        self.comboBox.setObjectName("comboBox")        self.comboBox.addItem("")        self.comboBox.addItem("")        self.comboBox.addItem("")        self.comboBox.addItem("")        self.comboBox.currentIndexChanged.connect(lambda :self.select_mode())        #開始檢測按鈕        self.pushButton_2 = QtWidgets.QPushButton(Form)        self.pushButton_2.setGeometry(QtCore.QRect(190, 610, 100, 70))        self.pushButton_2.setStyleSheet("font: 15pt \"宋體\";\n""border:1px solid black;\n""background-color:#e1e1e1;")        self.pushButton_2.setObjectName("pushButton_2")        self.pushButton_2.setChecked(False)        self.pushButton_2.clicked.connect(lambda :self.vim_show())        self.pushButton_3 = QtWidgets.QPushButton(Form)        self.pushButton_3.setGeometry(QtCore.QRect(50, 210, 160, 30))        self.pushButton_3.setStyleSheet("font: 15pt \"宋體\";\n""border:1px solid black;\n""background-color:#e1e1e1;")        self.pushButton_3.setObjectName("pushButton_3")        self.pushButton_3.setChecked(False) # 設置開始時的狀態為未選中        self.pushButton_3.clicked.connect(lambda :self.select_modelfile())        self.pushButton_7 = QtWidgets.QPushButton(Form)        self.pushButton_7.setGeometry(QtCore.QRect(50, 550, 160, 30))        self.pushButton_7.setStyleSheet("font: 15pt \"宋體\";\n"                                        "border:1px solid black;\n"                                        "background-color:#e1e1e1;")        self.pushButton_7.setObjectName("pushButton_7")        self.lineEdit_2=QtWidgets.QLineEdit(Form)        self.lineEdit_2.setGeometry(QtCore.QRect(230, 550, 220, 30))        self.lineEdit_2.setStyleSheet("border: 1px solid black;")        self.lineEdit_2.setObjectName("lineEdit_2")        self.label1=QtWidgets.QLabel(Form)        self.label1.setGeometry(QtCore.QRect(650, 100, 300, 300))        self.label2.setAlignment(QtCore.Qt.AlignCenter)        self.label1.setStyleSheet("border: 1px solid black;")        self.label1.setObjectName("label1")        self.textEdit = QtWidgets.QTextEdit(Form)        self.textEdit.setGeometry(QtCore.QRect(600, 100, 40, 300))        self.textEdit.setLayoutDirection(QtCore.Qt.LeftToRight)        self.textEdit.setStyleSheet("border: 1px solid black;\n""font: 15pt \"宋體\";")        self.textEdit.setObjectName("textEdit")        self.textEdit_2 = QtWidgets.QTextEdit(Form)        self.textEdit_2.setGeometry(QtCore.QRect(600, 410, 40, 300))        self.textEdit_2.setStyleSheet("border: 1px solid black;\n""font: 15pt \"宋體\";")        self.textEdit_2.setAlignment(QtCore.Qt.AlignHCenter)        self.textEdit_2.setObjectName("textEdit_2")        self.tableWidget = QtWidgets.QTableWidget(Form)        self.tableWidget.setGeometry(QtCore.QRect(230, 370, 221, 170))        self.tableWidget.setStyleSheet("font: 15pt \"宋體\";\n""")        self.tableWidget.setObjectName("tableWidget")        self.tableWidget.setColumnCount(1)        self.tableWidget.setRowCount(4)        item = QtWidgets.QTableWidgetItem()        self.tableWidget.setVerticalHeaderItem(0, item)        item = QtWidgets.QTableWidgetItem()        self.tableWidget.setVerticalHeaderItem(1, item)        item = QtWidgets.QTableWidgetItem()        self.tableWidget.setVerticalHeaderItem(2, item)        item = QtWidgets.QTableWidgetItem()        self.tableWidget.setVerticalHeaderItem(3, item)        item = QtWidgets.QTableWidgetItem()        self.tableWidget.setHorizontalHeaderItem(0, item)        self.tableWidget.horizontalHeader().setDefaultSectionSize(100)        self.tableWidget.horizontalHeader().setMinimumSectionSize(100)        self.tableWidget.verticalHeader().setDefaultSectionSize(30)        self.lineEdit_3 = QtWidgets.QLineEdit(Form)        self.lineEdit_3.setGeometry(QtCore.QRect(230, 210, 220, 30))        self.lineEdit_3.setStyleSheet("border: 1px solid black;")        self.lineEdit_3.setObjectName("lineEdit_3")        self.lineEdit_4 = QtWidgets.QLineEdit(Form)        self.lineEdit_4.setGeometry(QtCore.QRect(230, 260, 220, 30))        self.lineEdit_4.setStyleSheet("border: 1px solid black;")        self.lineEdit_4.setObjectName("lineEdit_4")        self.widget_3 = QtWidgets.QWidget(Form)        self.widget_3.setGeometry(QtCore.QRect(20, 30, 460, 690))        self.widget_3.setStyleSheet("border : 1px solid black;")        self.widget_3.setObjectName("widget_3")        self.lineEdit_5 = QtWidgets.QLineEdit(self.widget_3)        self.lineEdit_5.setGeometry(QtCore.QRect(90, 20, 261, 51))        self.lineEdit_5.setStyleSheet("font: 16pt \"宋體\";")        self.lineEdit_5.setAlignment(QtCore.Qt.AlignCenter)        self.lineEdit_5.setObjectName("lineEdit_5")        self.lineEdit_7 = QtWidgets.QLineEdit(self.widget_3)        self.lineEdit_7.setGeometry(QtCore.QRect(210, 280, 220, 30))        self.lineEdit_7.setStyleSheet("border: 1px solid black;")        self.lineEdit_7.setObjectName("lineEdit_7")        self.pushButton_4 = QtWidgets.QPushButton(self.widget_3)        self.pushButton_4.setGeometry(QtCore.QRect(30, 410, 160, 61))        self.pushButton_4.setStyleSheet("font: 15pt \"宋體\";\n""background-color:#e1e1e1;")        self.pushButton_4.setObjectName("pushButton_4")        #參數確認按鈕        self.pushButton_5 = QtWidgets.QPushButton(Form)        self.pushButton_5.setGeometry(QtCore.QRect(50, 610, 100, 70))        self.pushButton_5.setStyleSheet("font: 15pt \"宋體\";\n""border:1px solid black;\n""background-color:#e1e1e1;")        self.pushButton_5.setObjectName("pushButton_5")        self.pushButton_5.setChecked(False)        self.pushButton_5.clicked.connect(lambda: self.param_show())        #結束檢測按鈕        self.pushButton_6 = QtWidgets.QPushButton(Form)        self.pushButton_6.setGeometry(QtCore.QRect(330, 610, 100, 70))        self.pushButton_6.setStyleSheet("font: 15pt \"宋體\";\n"                                        "border:1px solid black;\n"                                        "background-color:#e1e1e1;")        self.pushButton_6.setObjectName("pushButton_6")        self.pushButton_6.setChecked(False)        self.pushButton_6.clicked.connect(lambda: self.end_detect())        self.lineEdit_8 = QtWidgets.QLineEdit(self.widget_3)        self.lineEdit_8.setGeometry(QtCore.QRect(210, 120, 220, 30))        self.lineEdit_8.setStyleSheet("border: 1px solid black;")        self.lineEdit_8.setObjectName("lineEdit_8")        self.comboBox_2 = QtWidgets.QComboBox(self.widget_3)        self.comboBox_2.setGeometry(QtCore.QRect(30, 120, 160, 30))        self.comboBox_2.setStyleSheet("font: 15pt \"宋體\";\n""background-color:#e1e1e1;")        self.comboBox_2.setPlaceholderText("")        self.comboBox_2.setObjectName("comboBox_2")        self.comboBox_2.currentIndexChanged.connect(lambda : self.select_device())        self.comboBox_2.addItem("")        self.comboBox_2.addItem("")        self.comboBox_2.addItem("")        self.lineEdit_5.raise_()        self.lineEdit_7.raise_()        self.lineEdit_8.raise_()        self.comboBox_2.raise_()        self.pushButton_4.raise_()        self.widget_4 = QtWidgets.QWidget(Form)        self.widget_4.setGeometry(QtCore.QRect(530, 30, 510, 690))        self.widget_4.setStyleSheet("border:1px solid black;")        self.widget_4.setObjectName("widget_4")        self.lineEdit_6 = QtWidgets.QLineEdit(self.widget_4)        self.lineEdit_6.setGeometry(QtCore.QRect(70, 10, 350, 50))        self.lineEdit_6.setStyleSheet("font: 16pt \"宋體\";")        self.lineEdit_6.setAlignment(QtCore.Qt.AlignCenter)        self.lineEdit_6.setObjectName("lineEdit_6")        self.widget_4.raise_()        self.widget_3.raise_()        self.label2.raise_()        self.pushButton.raise_()        self.comboBox.raise_()        self.pushButton_3.raise_()        self.label1.raise_()        self.textEdit.raise_()        self.textEdit_2.raise_()        self.tableWidget.raise_()        self.lineEdit_3.raise_()        self.lineEdit_4.raise_()        self.pushButton_2.raise_()        self.pushButton_5.raise_()        self.pushButton_6.raise_()        self.pushButton_7.raise_()        self.lineEdit_2.raise_()        self.retranslateUi(Form)        QtCore.QMetaObject.connectSlotsByName(Form)    def retranslateUi(self, Form):        _translate = QtCore.QCoreApplication.translate        Form.setWindowTitle(_translate("Form", "YOLOV5檢測"))        self.pushButton.setText(_translate("Form", "選擇文件"))        self.pushButton_7.setText(_translate("Form", "是否結束"))        self.comboBox.setItemText(0, _translate("Form", "檢測方式"))        self.comboBox.setItemText(1, _translate("Form", "圖片檢測"))        self.comboBox.setItemText(2, _translate("Form", "視頻檢測"))        self.comboBox.setItemText(3, _translate("Form", "攝像頭檢測"))        self.pushButton_2.setText(_translate("Form", "開始檢測"))        self.pushButton_5.setText(_translate("Form", "確定"))        self.pushButton_6.setText(_translate("Form", "結束程序"))        self.pushButton_3.setText(_translate("Form", "模型路徑"))        self.textEdit.setText(_translate("Form", "\n原\n始\n圖\n片\n/\n視\n頻"))        self.textEdit_2.setText(_translate("Form", "\n\n\n測\n試\n結\n果"))        item = self.tableWidget.verticalHeaderItem(0)        item.setText(_translate("Form", "imgsize"))        item = self.tableWidget.verticalHeaderItem(1)        item.setText(_translate("Form", "conf"))        item = self.tableWidget.verticalHeaderItem(2)        item.setText(_translate("Form", "iou"))        item = self.tableWidget.verticalHeaderItem(3)        item.setText(_translate("Form", "dnn"))        item = self.tableWidget.horizontalHeaderItem(0)        item.setText(_translate("Form", "數值"))        self.tableWidget.setItem(0,0,QtWidgets.QTableWidgetItem("640")) #圖片大小默認值        self.tableWidget.setItem(0,1,QtWidgets.QTableWidgetItem("0.25")) #置信度閾值默認值        self.tableWidget.setItem(0,2,QtWidgets.QTableWidgetItem("0.45")) #IOU閾值默認值        self.tableWidget.setItem(0,3,QtWidgets.QTableWidgetItem("False")) #IOU閾值默認值        self.lineEdit_3.setPlaceholderText(_translate("Form", "模型的路徑"))        self.lineEdit_4.setPlaceholderText(_translate("Form", "圖片或視頻檢測及攝像頭檢測"))        self.lineEdit_5.setText(_translate("Form", "參數設置及可視化"))        self.lineEdit_7.setPlaceholderText(_translate("Form", "圖片或視頻路徑"))        self.pushButton_4.setText(_translate("Form", "其他參數"))        self.lineEdit_8.setPlaceholderText(_translate("Form", "運行設備(CPU或GPU)"))        self.comboBox_2.setItemText(0, _translate("Form", "設備選擇"))        self.comboBox_2.setItemText(1, _translate("Form", "CPU"))        self.comboBox_2.setItemText(2, _translate("Form", "GPU"))        self.lineEdit_6.setText(_translate("Form", "圖片及測試結果可視化"))        self.lineEdit_2.setPlaceholderText(_translate("Form", "是否關閉視頻或者攝像頭"))    #選擇圖片或視頻路徑    def select_file(self):        file,_=QtWidgets.QFileDialog.getOpenFileName(None,"選擇文件",os.getcwd(),"All Files(*.jpg;*.png;*.jpeg;*.mp4;*.flv;*.avi;);;Text Files (*.txt)")        self.lineEdit_7.setText(file)    #選擇模型路徑    def select_modelfile(self):        file,_=QtWidgets.QFileDialog.getOpenFileName(None,"選擇文件",os.getcwd(),"All Files(*.pt;*.onnx;*.pth);;")        self.lineEdit_3.setText(file)    #設備選擇    def select_device(self):        device=self.comboBox_2.currentText() #獲取下拉框的信息        self.lineEdit_8.setText(device)    #模式選擇    def select_mode(self):        mode=self.comboBox.currentText()        self.lineEdit_4.setText(mode)    #模型初始化    def param_show(self):        device = torch.device("cpu" if self.lineEdit_8.text()=="CPU" else "cuda") #設備        modelpath = self.lineEdit_3.text() #模型路徑        self.suffix = Path(modelpath).suffix[1:]        if self.suffix == "pt":            self.flag=True            self.model = attempt_load(modelpath if isinstance(modelpath, list) else modelpath,                                 map_location=device)            self.stride = int(self.model.stride.max())  # model stride            self.names = self.model.module.names if hasattr(self.model, "module") else self.model.names  # get class names            if self.lineEdit_8.text() == "GPU":                self.model.half()        elif self.suffix == "onnx":            self.dnn = False            self.flag=False            if self.dnn:                # check_requirements(("opencv-python>=4.5.4",))                self.model = cv2.dnn.readNetFromONNX(modelpath)            else:                # check_requirements(("onnx", "onnxruntime-gpu" if torch.has_cuda else "onnxruntime"))                import onnxruntime                self.model = onnxruntime.InferenceSession(modelpath, None)        # 后兩項分別為按鈕(以|隔開,共有7種按鈕類型,見示例后)、默認按鈕(省略則默認為第一個按鈕)        msg=QtWidgets.QMessageBox(QtWidgets.QMessageBox.Warning,"消息框", "模型初始化完成,請開始檢測")        msg.exec_()    #檢測    def vim_show(self):        filepath=self.lineEdit_7.text() #文件路徑        detect_mode=self.lineEdit_4.text()#檢測模式        imgsize = int(self.tableWidget.item(0, 0).text())  # 圖片尺寸        conf_thres = float(self.tableWidget.item(1, 0).text())  # 置信度閾值        iou_thres = float(self.tableWidget.item(2, 0).text())  # iou閾值        device = self.lineEdit_8.text()  # 設備        if detect_mode=="圖片檢測":            #opencv讀圖展示            origin_img=cv2.imread(filepath)            if origin_img.shape[0] > origin_img.shape[1]:  # h>w                orgin_img1 = cv2.resize(origin_img, (int(origin_img.shape[1] * (300 / origin_img.shape[0])-1), 300),                                 cv2.INTER_LINEAR)            else:  # w>=h                orgin_img1 = cv2.resize(origin_img, (300, int(origin_img.shape[0] * (300 / origin_img.shape[1]))-1),                                 cv2.INTER_LINEAR)            #圖片預處理            input_img=self.process_img(origin_img,device,imgsize)            #推理            result=self.process_inference(origin_img,input_img,conf_thres,iou_thres)            #結果展示            if result.shape[0] > result.shape[1]:  # h>w                img1 = cv2.resize(result, (int(result.shape[1] * (300 / result.shape[0]))-1, 300),                                 cv2.INTER_LINEAR)            else:  # w>=h                img1 = cv2.resize(result, (300, int(result.shape[0] * (300 / result.shape[1]))-1),                                 cv2.INTER_LINEAR)            #原圖展示            rgb_img = cv2.cvtColor(orgin_img1, cv2.COLOR_BGR2RGB)            qimg = QtGui.QImage(rgb_img.data, rgb_img.shape[1], rgb_img.shape[0], QtGui.QImage.Format_RGB888)            self.label1.setPixmap(QtGui.QPixmap.fromImage(qimg))            #結果展示            rgb_img1 = cv2.cvtColor(img1, cv2.COLOR_BGR2RGB)            qimg1 = QtGui.QImage(rgb_img1.data, rgb_img1.shape[1], rgb_img1.shape[0], QtGui.QImage.Format_RGB888)            self.label2.setPixmap(QtGui.QPixmap.fromImage(qimg1))        elif detect_mode=="視頻檢測":            cap = cv2.VideoCapture(filepath)            count = 1            while cap.isOpened():                if count % 2 == 0:                    ret, frame = cap.read()                    if ret:                        if frame.shape[0] > frame.shape[1]:  # h>w                            img = cv2.resize(frame, (int(frame.shape[1] * (300 / frame.shape[0])), 300),                                             cv2.INTER_LINEAR)                        else:  # w>=h                            img = cv2.resize(frame, (300, int(frame.shape[0] * (300 / frame.shape[1]))),                                             cv2.INTER_LINEAR)                        input_img = self.process_img(frame, device, imgsize)                        result = self.process_inference(frame, input_img, conf_thres, iou_thres)                        if result.shape[0] > result.shape[1]:  # h>w                            img1 = cv2.resize(result, (int(result.shape[1] * (300 / result.shape[0])) - 1, 300),                                              cv2.INTER_LINEAR)                        else:  # h<=w 1="" 2="=" 300="" img1="cv2.resize(result," -="" img="cv2.cvtColor(img," qimg="QtGui.QImage(img.data," rgb1="cv2.cvtColor(img1," qimg1="QtGui.QImage(rgb1.data," else:="" break="" count="" self.cap="cv2.VideoCapture(0)" while="" true:="" if="" 0:="" frame="self.cap.read()" ret:=""> frame.shape[1]:  # h>w                            img = cv2.resize(frame, (int(frame.shape[1] * (300 / frame.shape[0])), 300),                                             cv2.INTER_LINEAR)                        else:  # w>=h                            img = cv2.resize(frame, (300, int(frame.shape[0] * (300 / frame.shape[1]))),                                             cv2.INTER_LINEAR)                        input_img=self.process_img(frame,device,imgsize)                        result=self.process_inference(frame,input_img,conf_thres,iou_thres)                        if result.shape[0]>result.shape[1]: #h>w                            img1=cv2.resize(result,(int(result.shape[1]*(300/result.shape[0]))-1,300),cv2.INTER_LINEAR)                        else: #h<=w                            img1=cv2.resize(result,(300,int(result.shape[0]*(300/result.shape[1]))-1),                                            cv2.INTER_LINEAR)                        img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)                        cv2.waitKey(1)                        qimg = QtGui.QImage(img.data, img.shape[1], img.shape[0], QtGui.QImage.Format_RGB888)                        self.label1.setPixmap(QtGui.QPixmap.fromImage(qimg))                        #結果展示                        rgb1=cv2.cvtColor(img1,cv2.COLOR_BGR2RGB)                        qimg1=QtGui.QImage(rgb1.data,rgb1.shape[1],rgb1.shape[0],QtGui.QImage.Format_RGB888)                        self.label2.setPixmap(QtGui.QPixmap.fromImage(qimg1))                    #復位                    count=1                    if self.lineEdit_2.text()=="是":                        break                else:                    count += 1            self.cap.release()            cv2.destroyAllWindows()    #退出程序    def end_detect(self):       sys.exit(1)    #圖片處理    def process_img(self,org_img,device,imgsize):        """        Args:            org_img: 原圖            device: 設備            imgsize: 圖片尺寸        Returns:        """        # 查看圖片尺寸是否能別stride整除        imgsz = check_img_size(imgsize, s=self.stride)        # resize_padding        img = letterbox(org_img, imgsz, self.stride, auto=self.flag)[0]        img = img.transpose((2, 0, 1))[::-1]  # HWC to CHW, BGR to RGB        img = np.ascontiguousarray(img)        if self.suffix == "onnx":            img = img.astype("float32")        else:            img = torch.from_numpy(img).to(device.lower())            # 設置是否為半精度測試            if device == "GPU":                img = img.half()            else:                img=img.float()        img /= 255.0  # 歸一化        if len(img.shape) == 3:            img = img[None]        return img    #推理進程    def process_inference(self,org_img,img,conf_thres,iou_thres):        """        Args:            org_img: 原圖            img: 縮放后的圖            conf_thres: 置信度閾值            iou_thres: IOU閾值        Returns:        """        if self.suffix == "pt":            pred = self.model(img)[0]        elif self.suffix == "onnx":            if self.dnn:                self.model.setInput(img)                pred = torch.tensor(self.model.forward())            else:                pred = torch.tensor(self.model.run([self.model.get_outputs()[0].name], {self.model.get_inputs()[0].name: img}))        pred = non_max_suppression(pred, conf_thres, iou_thres, classes=None, agnostic=False, max_det=1000)        dt, seen = [0.0, 0.0, 0.0], 0        for i, det in enumerate(pred):            seen += 1            im0 = org_img.copy()            # 繪制預測框            annotator = Annotator(im0, line_width=3, example=str(1))            # 檢測到目標時            if len(det):                det[:, :4] = scale_coords(img.shape[2:], det[:, :4], im0.shape).round()                # 寫結果                for *xyxy, conf, cls in reversed(det):                    c = int(cls)                    # label = f"{conf:.2f}"                    label = f"{self.names[c]} {conf:.2f}"                    annotator.box_label(xyxy, label, color=colors(c, True))            im0 = annotator.result()            # cv2.imwrite(save_path + os.sep + Path(img_path).name, im0)        return im0if __name__ == "__main__":    import sys    QtCore.QCoreApplication.setAttribute(QtCore.Qt.AA_EnableHighDpiScaling)  # 解決了Qtdesigner設計的界面與實際運行界面不一致的問題    app = QtWidgets.QApplication(sys.argv)    widget = QtWidgets.QWidget()    ui = Ui_Form()    ui.setupUi(widget)    widget.show()    sys.exit(app.exec_())

總結

以上就是本篇文章的全部內容,歡迎評論區指正錯誤,也可加入QQ群:995760755交流。

責任編輯:

標簽:

相關推薦:

精彩放送:

新聞聚焦
Top 主站蜘蛛池模板: 国产精品国产三级国产aⅴ 精品欧美久久 | 亚洲图片小说区 | 国产一区二区在线不卡 | 五月激情综合 | av黄色在线免费观看 | 春色免费视频 | 淫五月天 | 久久艹精品 | 97精品在线| 不卡的av| 4色av| 亚洲欧美另类视频 | 成人免费xxxxxx视频 | 私密视频在线观看 | 国产操比视频 | 欧美精品一区二区久久婷婷 | 国产欧美一区二区精品忘忧草 | 欧美日本在线观看 | 天天射天天色天天干 | 亚洲国产天堂久久综合 | japanesexxxx日本妞 | 国产热 | 男人操女人免费网站 | 国产精品免费久久久 | 男人的天堂在线视频 | 成人免费xxxxxx视频 | 天天插天天狠 | 五月天社区 | 这里只有精品视频 | 中文久久久久 | 97天天操| 国产思思99re99在线观看 | av免费观看网址 | 久草新在线 | 亚洲精品乱码久久久久久日本蜜臀 | 国产精品女同久久久久 | 人人看人人射 | 日韩美女少妇 | 91在线不卡 | √天堂 | √天堂 | 九九色精品 | www.好吊色| 久久免费小视频 | 久久精品9| 不卡的av一区 | 色花av| 久久国产99 | 亚洲精品视频一区二区三区 | 成人网在线免费观看 | 豆花av| 手机看片1024国产 | 国产色片 | 91在线视频精品 | 黄色欧美视频 | 国产tv在线观看 | 欧美黄视频 | 亚洲精品九九 | 欧美激情视频一区二区三区 | 成人福利视频网站 | 好吊日在线| 久久久69 | 免费黄色小视频 | 欧美精品123区 | 18色av | 亚洲射图 | 奇米影视在线观看 | 日韩三级黄 | 久久综合加勒比 | 国产又黄又 | 色哟哟网站 | av涩涩| 日韩第九页| 国产丝袜一区二区三区 | 欧美日韩综合一区二区 | igao国产精品 | 91久久极品少妇xxxxⅹ软件 | 在线中文字幕观看 | 伊人午夜视频 | 国产三级在线看 | 亚洲欧洲日本在线 | 加勒比色综合 | 亚洲bb| 亚洲春色另类 | 自拍第一页 | 一区自拍| 国产福利一区二区 | 99久久精品国产一区二区成人 | 中文字幕亚洲一区二区三区五十路 | 久久大奶| 一区二区三区在线观看av | 91欧美激情一区二区三区 | 婷婷视频一区二区三区 | 特黄老太婆aa毛毛片 | 日本大尺度吃奶做爰久久久绯色 | xxxwww国产 | 国产亚洲欧美一区二区三区 | 顶级毛片 | av网在线 | aaa一级片 | 最新国产精品精品视频 | 97久久免费视频 | 国产精品国产三级国产专业不 | 日日夜夜艹 | 黄色大片在线免费观看 | 天天骑夜夜操 | 欧美成人性生活 | 日本欧美久久久久免费播放网 | 久久婷婷伊人 | 亚欧洲精品在线视频免费观看 | 99热网址 | 一级黄色片免费在线观看 | 91精品婷婷国产综合久久蝌蚪 | 午夜免费毛片 | 久久男人视频 | 久久久蜜桃一区二区人 | 在线免费小视频 | 最新国产在线 | 国产日韩精品一区二区三区 | 色呦呦免费视频 | 免费日批视频 | 夜夜艹| 久久天堂影院 | 天天干一干 | 久久高清精品 | 欧美一级性视频 | 天堂网在线最新版www中文网 | 久久高清免费视频 | 国产另类av | 一本一道久久久a久久久精品蜜臀 | 91porn九色| 精品视频一区二区三区在线观看 | 欧美男人的天堂 | 欧美日韩激情一区二区 | 欧美激情一区 | www.狠狠插| 九一爱爱 | 国产女人爽到高潮久久久4444 | 欧美a视频在线观看 | 台湾佬美性中文娱乐网 | 午夜激情毛片 | 黑丝av在线 | 久久综合桃花网 | 中文字幕女优 | 成人国产在线 | 日韩欧美国产综合 | 台湾佬美性中文娱乐网 | 成人av免费在线 | 91丝袜国产在线观看 | 播放一级黄色片 | 毛片天堂| 国产成人久久久精品免费澳门 | 中文字幕在线字幕中文 | 亚欧av在线 | caopeng在线| 午夜视频国产 | 日本不卡视频在线 | 最近中文字幕日本 | 久久爱网 | 三级精品在线 | 中文字幕在线免费视频 | 色婷亚洲 | 中文字幕一区一区三区 | 日本大胆裸体做爰视频 | 一区二区三区在线免费播放 | 操穴网站 | 亚洲精品免费观看 | 91福利视频一区 | 国产精品毛片视频 | 亚洲精品久久久久久中文传媒 | 亚洲午夜影视 | 操网站| 中文字幕在线视频免费 | 狠狠干综合网 | 超碰男人的天堂 | a天堂在线观看视频 | 男女视频免费观看 | 亚洲精品自拍偷拍视频 | 天天干天天操av | 日韩午夜三级 | 少妇又色又爽又黄的视频 | 99亚洲视频 | 97成人在线| 骚虎视频最新网址 | 亚洲欧美日韩精品久久亚洲区 | 欧美日本三级 | 欧美挤奶吃奶水xxxxx | 亚洲成人精品久久 | 久久国产精品一区二区三区 | 欧美一级不卡 | 欧美在线国产 | 1024视频污 | 我要看免费毛片 | 亚洲影视一区二区 | 99色在线| 91日本视频 | 色原网 | 中文字幕日韩精品视频一区视频二区 | a国产精品 | 国产精品人人人人 | 国产精品一区二区人人爽 | 久久一区二区三区精品 | 黄色成人av在线 | 精品视频久久久 | 男生插女生视频 | 一级少妇精品久久久久久久 | 国产精品久久久久久久久借妻 | 久久久激情视频 | 西欧毛片| 国产一级一片免费播放 | 在线播放你懂得 | 色噜噜一区二区 | 4438全国最大成人网 | 天天躁日日躁狠狠躁av | 成人欧美一区二区三区黑人免费 | 欧美日韩v| 久久影院中文字幕 | 九色国产视频 | 黄色片久久| 调教丰满的已婚少妇在线观看 | 国产一区h | 日日操夜夜操狠狠操 | 97人人精品 | 亚洲一级图片 | 91精品国产综合久久蜜臀 | 欧美亚洲日本国产 | 18色av| wwwwxxx日本 | 国产超碰人人模人人爽人人添 | 奇米影视一区二区 | 日日操影院 | 成人乱人乱一区二区三区 | 国产20页 | 狠狠干b| 国产污污网站 | 中字毛片 | 色综合成人 | 国产一区视频在线 | 一级片视频免费看 | 在线91播放 | 国内精品视频在线观看 | 在线免费看污视频 | 在线一区二区三区做爰视频网站 | 波多野吉衣一区二区三区 | 午夜污| 国产成人三级在线观看 | 九色在线视频 | 91caob| 新婚夫妇白天啪啪自拍 | 欧美亚洲| 久久成人黄色 | 99riav国产| 亚洲精品久久久久 | 国产视频久久久久久久 | 四虎永久在线观看 | 鬼灭之刃柱训练篇在线观看 | 欧美一级片在线播放 | 久久精品成人av | 黄色操人视频 | 裸体按摩www性xxxcom | 性欧美大战久久久久久久83 | 少妇在线视频 | 国产黄色一级 | 夜夜春影院 | 欧美国产综合 | 欧美激情动态图 | 综合色在线观看 | 久久精品99久久久久久 | 亚洲欧美另类视频 | 免费看日韩 | 丰满大乳露双乳呻吟 | 男人av网 | 男人的天堂2019 | 区一区二在线观看 | 中文字幕久久综合 | 亚洲色综合 | 天天插天天操 | 久久这里都是精品 | 国产一级特黄 | 99亚洲天堂 | 视频一区中文字幕 | 色老头免费视频 | 激情欧美在线 | 四虎福利视频 | 日批毛片 | 亚洲久久在线 | 先锋影音一区二区 | 欧美另类极品videosbest使用方法 | 秋霞午夜视频 | 亚洲毛片网 | 午夜久久久久久 | 中文有码在线播放 | 好吊色欧美一区二区三区视频 | 91视频分类| 91丝袜| 影音先锋中文字幕一区 | 一区在线观看视频 | 免费在线观看的黄色网址 | 99久久国产毛片 | 久久久看片 | 久久露脸国产精品 | 久久久久久亚洲视频 | 色先锋资源网 | 黄色午夜视频 | 天天色综合av | 欧美成人aaaaⅴ片在线看 | 黄色大片免费网站 | 91精品福利在线 | 99视频一区 | 91麻豆成人精品国产 | 久久久久香蕉视频 | 久久一区亚洲 | 在线精品视频一区 | 在线播放亚洲视频 | 天天操穴| 男人久久| 最近日本字幕mv免费观看在线 | 五月开心激情 | 可以看av的网址 | 国产女主播福利 | av丁香 | 视频在线播 | 中文字幕 自拍偷拍 | 久久久久久久久久久影视 | 日本少妇激情视频 | 国模私拍在线观看 | 国产啪视频 | 日韩av毛片| 波多野结衣一二区 | 天天草天天操 | 国产成人一区二区三区视频 | 天天干天天干天天干 | 国产性色视频 | 婷婷二区 | avove探花 | 欧美a∨| 免费日本黄色 | 8x国产一区二区三区精品推荐 | 日日夜夜精品视频 | 真人毛片视频 | 在线免费观看黄视频 | 用力使劲高潮了888av | 国产专区一区二区 | 激情五月在线 | 国产九色sp调教91 | 91麻豆免费视频 | 亚洲日本免费 | 亚洲国产成人在线视频 | 天天玩夜夜操 | 一级黄色视屏 | 在线久草 | 国产乱xxxxx国语对白 | 夜夜操狠狠操 | 亚洲最大免费视频 | 久久久久久天堂 | 在线国产小视频 | 91亚洲视频在线观看 | 成人精品一区二区三区 | 久久视频免费看 | 韩国av免费在线 | av大全在线 | 国产一区二区视频在线播放 | 99精品国自产在线 | 国产精品高潮呻吟久久av黑人 | 亚洲天堂视频在线观看免费 | 国产欧美不卡 | 午夜激情婷婷 | 国产视频中文字幕 | 国产九色在线播放九色 | 日本黄色免费看 | 中文字幕一区二区三区精品 | 国产又大又黄的视频 | 在线干| 蜜臀精品| 日日日操| 久久99亚洲精品 | 亚洲第一在线播放 | 成人做爰66片免费看网站 | 欧美视频一区二区在线观看 | 欧美第一页在线 | 在线播放的av | 一级日韩一级欧美 | 免费精品 | 九色av| 亚洲自拍网站 | 国内外成人免费视频 | 美女污污网站 | 国产乱国产乱300精品 | mm1313亚洲国产精品美女 | 丰满少妇在线观看资源站 | 久久精品视频免费 | 亚洲乱码国产乱码精品精98午夜 | 蜜臀99久久精品久久久久久软件 | 中文字幕日韩一级 | 久久九九国产精品 | 亚洲黄色激情视频 | 操久久久 | 蜜桃av噜噜一区二区三区麻豆 | 国产精品啪 | 亚洲精品你懂的 | 亚洲综合在线色 | 成人春色影视 | 东京久久| 亚洲成年在线 | 久草福利在线观看 | 先锋资源久久 | 最近中文字幕av | 欧美一级性生活视频 | 一级片特黄 | 国内精品一区二区 | 国产精品久久久久一区二区三区 | 不卡在线视频 | 国产寡妇视频 | 成人免费小视频 | 高h喷汁呻吟3p | 99久久精品国产亚洲 | 亚洲人人网 | 天天爱天天做 | jzjzjzjzj亚洲成熟少妇 | 国产精品久久久爽爽爽麻豆色哟哟 | 日韩第九页 | 午夜精品久久久久久毛片 | 亚洲黄色免费看 | 日产精品久久久 | av午夜三片乱码少妇 | 一区二区三区欧美在线 | 老司机在线看片 | 亚洲a区在线观看 | 在线观看一区视频 | 亚洲麻豆视频 | 成人1区2区3区 | av丁香| 波多野结衣一区二区在线 | 永久免费av| 日韩视频成人 | 亚洲综合小说区 | 亚洲精品国产乱码久久久1区 | 草草草av| 69精品国产 | 一二区在线观看 | 成人午夜免费福利视频 | 国产一区二区三区www | 欧美性粗暴 | 小早川怜子久久精品中文字幕 | 中文字幕码精品视频网站 | 日本黄网站在线观看 | www超碰在线 | 涩涩五月天 | 成人免费一级伦理片在线播放 | 在线成人激情视频 | 91桃色免费观看 | 日本性久久| 精品影院 | 国产麻豆一区二区 | 日日夜夜免费 | 日韩精品一二区 | 午夜av影视| 最近在线更新8中文字幕免费 | 操小妹影视| 国产精品亚洲欧美在线播放 | 国产免费脚交足视频在线观看 | 成 人 免费 黄 色 | 香蕉av一区二区三区 | 国产精品丝袜黑色高跟鞋 | 久久小视频 | 69视频入口| 日韩精品手机在线 | 99视频免费 | 久久大香焦| 亚洲视频h | 手机在线看片1024 | 午夜日韩精品 | 欧美精品久久久久久久 | 亚洲精品理论片 | 日韩在线视频网站 | 国产96视频 | 日韩三级视频在线观看 | 三级视频网站在线观看 | 五月激情开心网 | 欧美高清免费 | 亚洲 欧美 视频 | 国产精品爽爽 | 中文字幕日产av | 免费在线不卡av | 日韩欧美精品在线 | 在线观看亚洲视频 | 这里只有精品在线观看视频 | www.x日本| 噜噜色.com | 欧美成人免费看 | 欧美xxxxhd| www.五月激情| 毛片一级视频 | www欧美日韩 | 色老头在线视频 | 午夜香蕉视频 | 国产伦精品一区二区三区在线播放 | 精品美女久久久 | 看免费黄色片 | 婷婷五月在线视频 | 成人av黄色 | 精品一区二区三区自拍图片区 | 在线亚洲一区二区 | 天天综合网入口 | 亚洲一区二区a | 国产色黄| 婷婷五月在线视频 | 欧美激情精品 | 国产一区二区不卡 | 九一天堂 | 97偷拍视频 | 在线免费播放 | 91精品久久久久久久久久入口 | 国产精品丝袜黑色高跟鞋 | 亚洲激情区 | 三级全黄的视频 | 国产视频1区2区 | 人人干人人干 | av免费在线不卡 | 毛片网在线观看 | 国产视频导航 | 国产福利免费 | 国产成人av网站 | 日韩中文字幕在线视频 | 中文字幕成人av | 草草影院在线 | 少妇又紧又色又爽又刺激 | 五月天综合 | 精品福利视频导航 | 女久久 | 欧美一级一片 | 一道本av | 午夜激情视频在线观看 | 在线免费观看黄色网址 | 久久国产免费看 | 亚欧成人 | 黄色大片在线播放 | 国产精品夫妻 | 亚洲国产黄色 | 亚洲国产精品国自产拍久久 | 一级片国产精品 | 亚洲欧美日韩成人在线 | 91sex国产| 国产视频最新 | 久久九九热 | 秋霞影院午夜伦 | 欧洲一区在线观看 | 亚洲无毛 | 久久黄色小视频 | 岛国av一区二区 | 综合精品一区 | 91在线公开视频 | 成年在线观看 | 免费av中文字幕 | 性色av一区二区三区 | 久久99精品一区二区蜜桃臀 | wwyoujizzcom| 成年人在线观看视频网站 | 国产草草视频 | 小嫩嫩12欧美 | 国产精品久久久久久无人区 | 免费精品 | 亚洲精品国产a久久久久久 一级片999 | 人人看人人射 | 亚洲视频网站在线观看 | 四虎在线免费观看 | 国产精品色哟哟 | 欧美成人一级 | 高清一二三区 | 久久入口 | 99精品99| 一级片一级片一级片一级片 | 成人av专区 | 九九热国产视频 | 亚洲3atv精品一区二区三区 | 亚洲成人中文字幕 | 国产毛片一区二区三区va在线 | 天天干天天做天天操 | 成人免费观看网站 | 尤物视频在线观看国产 | 国产精品黄视频 | 国产伦精品一区二区三区免费 | 日韩有码一区 | 色屁屁ts人妖系列二区 | 色狠av| av资源在线 | 日韩美女少妇 | 天天干视频 | 欧美激情动态图 | 国产精品久久久久久久不卡 | 不卡的免费av | 黄色片在哪看 | 国产99久久精品一区二区300 | 日韩在线观看你懂的 | 欧美资源 | 黄色aa视频 | 欧美黑吊大战白妞欧美大片 | 欧美福利网站 | 亚洲23p| 国产欧美久久久久久 | 久草精品视频在线观看 | 亚洲天天操 | 国产精品久久久久一区二区三区 | av噜噜在线 | 久草视频福利在线 | 欧美三级视频在线播放 | 国产中文在线观看 | 国产综合一区二区 | 日韩视频在线观看一区二区 | 久草免费av | 伊人春色在线观看 | 性网 | 国产精品不卡在线 | 国产午夜精品久久久久久久 | 国产男女猛烈无遮挡 | 日本在线免费 | 黄色在线免费播放 | 久久久精品91 | 97超碰97| 蜜臀久久99精品久久久 | 日本一区二区在线看 | 亚洲精品国产一区 | 悠悠色综合 | 久久国产香蕉视频 | 精品一区二区在线视频 | 午夜在线免费视频 | 亚洲一区二区综合 | www性| 一节黄色片 | 超碰在 | 亚洲码无人客一区二区三区 | 国产一区二区免费看 | 亚洲激情视频在线观看 | 在线免费视频观看 | 日韩中文字幕网 | 国产91国语对白在线 | 日韩精品久久久久久免费 | 国产a级黄色 | 亚洲在线黄色 | 尤物网站在线观看 | 欧日韩在线观看 | 91国在线| 青青草狠狠干 | 日韩欧美高清视频 | 大香伊人中文字幕精品 | 中文字幕偷拍 | 成人免费一区二区三区在线观看 | 亚洲制服丝袜在线播放 | 一区久久久 | 最好看的2019中文大全在线观看 | 日韩有码一区 | av最新在线 | 精品国产自 | 成人网免费视频m3u8 | 国产精品国产成人国产三级 | 久久精品视频网 | 午夜免费福利 | 欧美激情综合五月色丁香 | 91网站大全 | 国产午夜久久 | 泽村玲子av | 国产精品免费久久久 | 夜夜躁恨恨躁爱躁 | 伊人春色视频 | av在线免费在线观看 | 插入综合网 | 亚洲区成人 | 全黄性高潮 | 久久久久久久国产精品影院 | 国产视频在线看 | 男女啊啊啊视频 | 国产一区二区在线视频 | 一区中文字幕 | 亚洲欧美伦理 | 在线免费国产精品 | 91亚洲精品一区二区乱码 | 国产激情福利 | 校园春色综合网 | h在线 | 丁香综合 | 久久精品视频在线免费观看 | 黄网站免费在线观看 | av一区二区三区在线 | 日韩在线视频免费播放 | 337p亚洲欧洲色噜噜噜 | 国产精品一区二区在线播放 | 超碰免费91 | 这里只有久久精品视频 | 九九热国产视频 | 在线1区| 国产精品a级| 91极品国产| 深夜福利视频在线 | 中文字幕av免费 | 午夜欧美在线 | 亚洲一区在线观 | 国产1区2区 | 毛片大全免费 | av中文天堂 | 色97| 五月天国产在线 | 欧美日韩免费在线 | 国产福利在线播放 | a√天堂中文字幕在线 | 亚洲综合中文网 | 日本91网站 | 99热这里只有精品在线观看 | 久久视频免费 | 五月婷婷一区 | 久久免费看视频 | 91av视频在线 | 久久两性视频 | 国产破处视频 | 午夜爽爽视频 | 色无极在线 | 久久久久久久久久久久久久av | 亚洲第六页 | 在线观看免费观看 | 在线精品播放 | 日韩在线不卡视频 | 伊人久久大香线蕉综合啪小说 | 浮力影院国产第一页 | 日本成人一区二区三区 | 樱花视频在线免费观看 | 成人播放器 | 91av福利| 在线亚洲自拍 | 婷婷av在线 | 九九热国产精品视频 | 日日夜夜噜 | 狠狠插av | 99久久精品国产一区二区成人 | 强行侵犯视频在线观看 | 国产精品影音先锋 | 丁香激情五月 | 国产精品日韩一区二区 | 亚洲精品午夜国产va久久成人 | 伊人久久综合视频 | 成人欧美精品 | 深夜福利一区二区 | 日本一区二区三区四区在线观看 | 午夜理伦三级理论 | 亚洲国产精品久久久久婷婷老年 | 亚洲永久免费视频 | 亚洲a一片 | 五月婷婷基地 | 日韩一级黄色 | 欧美性猛交乱大交3 | 啪啪自拍视频 | 亚洲视频一区在线播放 | 黄色激情视频在线观看 | 99视频在线看 | 欧美一级黄色片 | www.97cao.com| 精品国产久| 警察高h荡肉呻吟男男 | 免费看av毛片| 99国产精品久久久久久久 | 免费一级全黄少妇性色生活片 | 99热只有这里有精品 | 日韩精品一区在线 | 成年人国产网站 | 精品国产1区 | 国产97超碰 | 久久久久久毛片精品免费不卡 | 国产欧美日韩视频 | 欧美第二页 | 日本黄色免费看 | 日韩有码专区 | va视频在线观看 | 久久狠| 日日干夜夜草 | 日韩精品一区二区三区视频 | 特黄老太婆aa毛毛片 | 一区二区三区色视频 | 3d动漫啪啪精品一区二区中文字幕 | 日韩在线观看视频一区二区三区 | 国产又粗又黄又爽的视频 | 91网站在线免费观看 | 天天插天天干 | 日韩在线视频免费播放 | 美女性高潮视频 | h片在线免费看 | 成人欧美一区二区三区黑人冫 | 夜夜爱网站 | 老女人一毛片 | 精品久久视频 | 北条麻妃一二三区 | 国产96视频 | 三级视频网| 亚洲成av| 蜜桃久久久久久久 | 国产精品久久久久久999 | 一区二区中文 | 91视频播放 | 久久久久久久91 | 国产青青视频 | 久久久久久久久免费 | 天堂网免费视频 | 伊人久久超碰 | 久久久久久久国产精品 | 在线观看一二三区 | av操操 | 欧美日韩视频网站 | 久久精品国产欧美亚洲人人爽 | 亚洲777 | 黄色视屏网站 | 国产精品视频自拍 | 国产日韩精品一区 | 亚洲黄色网页 | 午夜少妇av | 婷婷深爱网 | 亚洲一区二区视频 | 日本少妇久久久 | 色狠av | 国产探花精品在线 | 亚洲视频精品在线观看 | www.看毛片 | 亚洲乱码一区二区 | 最新av| av不卡在线 | 欧美一级激情 | 国产交换配乱淫视频免费 | 中文幕无线码中文字蜜桃 | 一区二区三区在线视频观看 | 草1024榴社区成人 | 欧美一级片免费在线观看 | 亚洲爱色 | 日日干日日爽 | 国产成人三级在线观看视频 | 欧美午夜激情视频 | 国产中文字幕在线 | 久久久久久久成人 | 欧美成人福利视频 | 亚洲小视频在线 | av免费一区 | 亚洲天堂福利 | av综合在线观看 | 一本色道久久综合亚洲二区三区 | 亚洲影视一区二区三区 | 国产精品久久久久久久不卡 | 亚洲一区二区三区乱码aⅴ蜜桃女 | 日本黄网在线观看 | 一起操在线 | 一级黄色录像大片 | 天堂视频在线观看免费 | 欧美性猛交xxxxx水多 | www.欧美| 婷婷丁香九月 | 日日操日日操 | 亚洲黄色a级片 | 3p视频在线观看 | 亚洲国产成人av毛片大全 | 亚洲激情视频在线免费观看 | 日干夜干天天干 | 亚洲色欲色欲www | 国产福利一区二区三区在线观看 | 久久爱综合 | 一本色道av | 午夜亚洲一区 | 黄色日皮网站 | 国产黑丝一区二区 | 国产亚洲精品久久777777 | 国产成人在线观看网站 | 一区精品二区国产 | 毛片在线免费视频 | 性欧美最猛 | 蜜桃色一区二区三区 | 性色av免费观看 | 久久麻豆av | 亚洲一区二区三区乱码aⅴ 最新国产在线拍揄自揄视频 | 一区二区三区欧美在线 | 亚洲成人av | 国产污污视频 | 久草视频免费在线观看 | 在线综合网 | 人人爽人人澡 | 国产第1页 | 男女免费视频网站 | 动漫3d精品一区二区三区乱码 | 成人国产网站 | 伊人伊人 | 国产精品手机在线 | 国产又大又粗又硬 | 夜夜躁狠狠躁日日 | 亚洲精品国产精品国自产观看 | 亚洲欧美在线另类 | 综合热久久 | 人人人人爽 | 亚洲激情二区 | 日韩精品中文字幕一区 | 夜夜操av | 欧美综合一区二区三区 | 精品一二三 | 涩涩视频在线观看 | 久久8| 国产亚洲区 | 波多野结衣之潜藏淫欲 | 美女黄色av | 91精品国产麻豆国产自产在线 | 青青操视频在线 | 亚洲人人插 | 人人草在线观看 | 樱花视频在线免费观看 | 欧美xxxⅹ性欧美大片 | 成人毛片100免费观看 | 亚洲美女福利视频 | 成人免费视频国产免费麻豆 | 欧美日韩国产中文字幕 | 一本大道综合伊人精品热热 | 岛国av免费在线观看 | 亚洲综合在线一区 | 天天干天天草 | 日韩欧美精品一区 | 亚洲一级视频在线观看 | 国产黄a | 国产性自拍| 永久免费看mv网站入口亚洲 | 老司机福利精品 | 中文字幕在线永久 | 免费观看毛片网站 | 日韩av综合网 | 黄色大片网址 | 国产网红主播三级精品视频 | www五月| 天堂中文字幕免费一区 | 悠悠色影院| 国产视频一区在线观看 | 日韩中文字幕精品 | 五月婷婷网| 久久男人精品 | 国产自产高清不卡 | 亚洲精品香蕉 | 波多野结衣一区二区 | 九九九网站 | 91在线观看网站 | 久久伊人操 | 97蜜桃网 | 影音先锋久久资源 | 嫩草视频在线 | 一色桃子在线精品播放 | 91伦理视频 | 成人在线欧美 | 99热这里只有精品8 黄色小视频在线看 | 久久亚洲高清 | 国产网红主播三级精品视频 | 久久99精品久久久久久国产越南 | av第一页| 99热在线免费观看 | 亚洲成人va | 日韩图色 | 国产ts变态重口人妖hd | 亚洲精品午夜aaa久久久 | 国产精品第72页 | 中国美女性猛交 | 免费中文字幕视频 | 成人短视频在线 | 亚洲激情六月 | 亚洲老老头同性老头交j | www.国产com | 亚洲视频免费观看 | 国产igao为爱做激情在线观看 | 国产91白丝在一线播放 | 日本成人一区二区三区 | 日韩黄色一区 | 天天操天天干天天操 | 奇米影视第四色首页 | 神马午夜在线观看 | wwwwww在线观看 | 国产精品久久久久久久久久三级 | 国产在线观看第一页 | 日本久久视频 | 成人在线视频网 | 99免费精品视频 | www在线看| 国产激情网址 | av免费在线观看网址 | 揄拍成人国产精品视频99 | 99精品在线播放 | 在线免费观看黄色片 | 成人动漫免费在线观看 | 日日不卡av | 久久色网 | 波多av在线 | 中文av一区 | 亚洲在线视频网站 | 五月激情四射网 | 日韩中文在线播放 | 日本少妇中出 | 亚洲xx站| 国产精品婷婷午夜在线观看 | 视频一二三区 | 伊人二区 | 人人爽人人爽人人爽 | 国产区一区 | 麻豆av一区二区三区 | 精品国产一区二区三区久久久久久 | 国产黄色自拍视频 | 国产午夜精品久久久久久久 |