由于以前写的基础知识没有配写代码:http://download.csdn.net/download/eric_lmy/10121771
现在讲代码配上:显示效果如下:http://blog.csdn.net/Eric_lmy/article/details/78553354
推荐一个GitChat(赶紧领取,前十名免费,速速领取)
使用环境是:python3.6 opencv matplotlib pyqt5
也可以使用pyinstaller -F -w main.py 命令打包成ex文件,可以独立运行。(首先安装pyinstaller(本人使用1.0.0版本的))
ui功能和逻辑操作部分功能文件(mainWindow.py):
# -*- coding: utf-8 -*-
# Form implementation generated from reading ui file 'main.ui'
#
# Created by: PyQt5 UI code generator 5.9.1
#
# WARNING! All changes made in this file will be lost!
from PyQt5 import QtCore, QtGui, QtWidgets
import matplotlib.pyplot as plt
from matplotlib.backends.backend_qt5agg import FigureCanvasQTAgg as FigureCanvas
from matplotlib.backends.backend_qt5 import NavigationToolbar2QT as NavigationToolbar
import cv2
import time
import numpy as np
class Ui_MainWindow(object):
def __del__(self):
self.camera.release()# 释放资源
if self.out_release_flag:
self.out.release()
def setupUi(self, MainWindow):
self.recod_flag = False
self.out_release_flag = False
self.snap_flag = False
MainWindow.setObjectName("MainWindow")
MainWindow.resize(1332, 860)
MainWindow.setMinimumSize(QtCore.QSize(1332, 860))
MainWindow.setMaximumSize(QtCore.QSize(1332, 860))
self.centralwidget = QtWidgets.QWidget(MainWindow)
self.centralwidget.setObjectName("centralwidget")
self.tabWidget = QtWidgets.QTabWidget(self.centralwidget)
self.tabWidget.setGeometry(QtCore.QRect(10, 10, 1321, 831))
self.tabWidget.setObjectName("tabWidget")
self.tuXiang = QtWidgets.QWidget()
self.tuXiang.setObjectName("tuXiang")
self.frame = QtWidgets.QFrame(self.tuXiang)
self.frame.setGeometry(QtCore.QRect(0, 0, 991, 801))
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Preferred)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.frame.sizePolicy().hasHeightForWidth())
self.frame.setSizePolicy(sizePolicy)
self.frame.setMinimumSize(QtCore.QSize(991, 801))
self.frame.setMaximumSize(QtCore.QSize(991, 801))
self.frame.setFocusPolicy(QtCore.Qt.NoFocus)
self.frame.setLayoutDirection(QtCore.Qt.RightToLeft)
self.frame.setFrameShape(QtWidgets.QFrame.StyledPanel)
self.frame.setFrameShadow(QtWidgets.QFrame.Plain)
self.frame.setObjectName("frame")
self.widgetforimage = QtWidgets.QWidget(self.frame)
self.widgetforimage.setGeometry(QtCore.QRect(5, 5, 981, 791))
self.widgetforimage.setObjectName("widgetforimage")
self.verticalLayoutforimage = QtWidgets.QVBoxLayout(self.widgetforimage)
self.verticalLayoutforimage.setContentsMargins(0, 0, 0, 0)
self.verticalLayoutforimage.setObjectName("verticalLayoutforimage")
self.figureforimage, self.figaxesforimage = plt.subplots()
self.figureforimage.subplots_adjust(left=0.055,top=0.99,right=0.98,bottom=0.055)
self.canvasforimage = FigureCanvas(self.figureforimage)
self.toolbarforimage = NavigationToolbar(self.canvasforimage, self.widgetforimage)
self.toolbarforimage.setGeometry(QtCore.QRect(150, 150, 971, 41))
# self.toolbarforimage.setMinimumSize(QtCore.QSize(371, 41))
# self.toolbarforimage.setMaximumSize(QtCore.QSize(371, 41))
self.verticalLayoutforimage.addWidget(self.toolbarforimage)
self.canvasforimage.setMinimumSize(QtCore.QSize(971, 741))
self.canvasforimage.setMaximumSize(QtCore.QSize(971, 741))
self.verticalLayoutforimage.addWidget(self.canvasforimage)
self.frame_RGB = QtWidgets.QFrame(self.tuXiang)
self.frame_RGB.setGeometry(QtCore.QRect(1000, 0, 311, 91))
self.frame_RGB.setFrameShape(QtWidgets.QFrame.StyledPanel)
self.frame_RGB.setFrameShadow(QtWidgets.QFrame.Plain)
self.frame_RGB.setObjectName("frame_RGB")
self.frame_RGB_quyu = QtWidgets.QFrame(self.frame_RGB)
self.frame_RGB_quyu.setGeometry(QtCore.QRect(180, 10, 121, 71))
self.frame_RGB_quyu.setFrameShape(QtWidgets.QFrame.StyledPanel)
self.frame_RGB_quyu.setFrameShadow(QtWidgets.QFrame.Plain)
self.frame_RGB_quyu.setObjectName("frame_RGB_quyu")
self.widgetforquyu = QtWidgets.QWidget(self.frame_RGB_quyu)
self.widgetforquyu.setGeometry(QtCore.QRect(1, 1, 118, 68))
self.widgetforquyu.setObjectName("widgetforquyu")
self.verticalLayoutforquyu = QtWidgets.QVBoxLayout(self.widgetforquyu)
self.verticalLayoutforquyu.setContentsMargins(0, 0, 0, 0)
self.verticalLayoutforquyu.setObjectName("verticalLayoutforquyu")
self.figureforquyu, self.figaxesforquyu = plt.subplots()
self.figureforquyu.subplots_adjust(left=0.01,top=0.99,right=0.99,bottom=0.01)
self.canvasforquyu = FigureCanvas(self.figureforquyu)
self.canvasforquyu.setMinimumSize(QtCore.QSize(118, 68))
self.canvasforquyu.setMaximumSize(QtCore.QSize(118, 68))
# self.canvas.setGeometry(QtCore.QRect(110, 50, 1111, 701))
self.verticalLayoutforquyu.addWidget(self.canvasforquyu)
self.widget = QtWidgets.QWidget(self.frame_RGB)
self.widget.setGeometry(QtCore.QRect(10, 0, 161, 91))
self.widget.setObjectName("widget")
self.horizontalLayout_4 = QtWidgets.QHBoxLayout(self.widget)
self.horizontalLayout_4.setContentsMargins(0, 0, 0, 0)
self.horizontalLayout_4.setObjectName("horizontalLayout_4")
self.verticalLayout = QtWidgets.QVBoxLayout()
self.verticalLayout.setObjectName("verticalLayout")
self.horizontalLayout = QtWidgets.QHBoxLayout()
self.horizontalLayout.setObjectName("horizontalLayout")
self.label = QtWidgets.QLabel(self.widget)
self.label.setObjectName("label")
self.horizontalLayout.addWidget(self.label)
self.RGB_R_slider = QtWidgets.QSlider(self.widget)
self.RGB_R_slider.setMaximum(255)
self.RGB_R_slider.setPageStep(1)
self.RGB_R_slider.setProperty("value", 255)
self.RGB_R_slider.setOrientation(QtCore.Qt.Horizontal)
self.RGB_R_slider.setObjectName("RGB_R_slider")
self.horizontalLayout.addWidget(self.RGB_R_slider)
self.verticalLayout.addLayout(self.horizontalLayout)
self.horizontalLayout_2 = QtWidgets.QHBoxLayout()
self.horizontalLayout_2.setObjectName("horizontalLayout_2")
self.label_2 = QtWidgets.QLabel(self.widget)
self.label_2.setObjectName("label_2")
self.horizontalLayout_2.addWidget(self.label_2)
self.RGB_G_slider = QtWidgets.QSlider(self.widget)
self.RGB_G_slider.setMaximum(255)
self.RGB_G_slider.setPageStep(1)
self.RGB_G_slider.setOrientation(QtCore.Qt.Horizontal)
self.RGB_G_slider.setObjectName("RGB_G_slider")
self.horizontalLayout_2.addWidget(self.RGB_G_slider)
self.verticalLayout.addLayout(self.horizontalLayout_2)
self.horizontalLayout_3 = QtWidgets.QHBoxLayout()
self.horizontalLayout_3.setObjectName("horizontalLayout_3")
self.label_3 = QtWidgets.QLabel(self.widget)
self.label_3.setObjectName("label_3")
self.horizontalLayout_3.addWidget(self.label_3)
self.RGB_B_slider = QtWidgets.QSlider(self.widget)
self.RGB_B_slider.setMaximum(255)
self.RGB_B_slider.setPageStep(1)
self.RGB_B_slider.setOrientation(QtCore.Qt.Horizontal)
self.RGB_B_slider.setObjectName("RGB_B_slider")
self.horizontalLayout_3.addWidget(self.RGB_B_slider)
self.verticalLayout.addLayout(self.horizontalLayout_3)
self.horizontalLayout_4.addLayout(self.verticalLayout)
self.verticalLayout_2 = QtWidgets.QVBoxLayout()
self.verticalLayout_2.setObjectName("verticalLayout_2")
self.RGB_R_spinBox = QtWidgets.QSpinBox(self.widget)
self.RGB_R_spinBox.setMaximum(255)
self.RGB_R_spinBox.setProperty("value", 255)
self.RGB_R_spinBox.setObjectName("RGB_R_spinBox")
self.verticalLayout_2.addWidget(self.RGB_R_spinBox)
self.RGB_G_spinBox = QtWidgets.QSpinBox(self.widget)
self.RGB_G_spinBox.setMaximum(255)
self.RGB_G_spinBox.setObjectName("RGB_G_spinBox")
self.verticalLayout_2.addWidget(self.RGB_G_spinBox)
self.RGB_B_spinBox = QtWidgets.QSpinBox(self.widget)
self.RGB_B_spinBox.setMaximum(255)
self.RGB_B_spinBox.setObjectName("RGB_B_spinBox")
self.verticalLayout_2.addWidget(self.RGB_B_spinBox)
self.horizontalLayout_4.addLayout(self.verticalLayout_2)
self.comboBox_type = QtWidgets.QComboBox(self.tuXiang)
self.comboBox_type.setGeometry(QtCore.QRect(1010, 100, 69, 22))
self.comboBox_type.setObjectName("comboBox_type")
self.comboBox_type.addItem("")
self.comboBox_type.addItem("")
self.comboBox_type.addItem("")
self.comboBox_type.addItem("")
self.comboBox_type.addItem("")
self.comboBox_type.addItem("")
self.frame_line_range = QtWidgets.QFrame(self.tuXiang)
self.fra