图片车辆辨认

依据文章搭建好环境后开始进行做我的项目link

import sysimport cv2from PyQt5.QtGui import *from PyQt5.QtWidgets import *from PyQt5.QtGui import QIcon, QPalette, QPixmap, QBrush, QRegExpValidatorclass mainWin(QWidget):    def __init__(self):        """        构造函数        """        super().__init__()        self.initUI()        self.openBtn.clicked.connect(self.openFile)  # 信号和槽        self.grayBtn.clicked.connect(self.imgGray)  # 信号和槽        self.carCheckBtn.clicked.connect(self.carCheck)    def initUI(self):        # 设置窗口得大小        self.setFixedSize(860, 600)        # 图标和背景        self.setWindowTitle("车辆检测")        self.setWindowIcon(QIcon("img/icon.jpg"))  # 图标        # 标签        self.leftLab = QLabel("原图:", self)        self.leftLab.setGeometry(10, 50, 400, 400)  # 设置相对地位        self.leftLab.setStyleSheet("background:white")        self.newLab = QLabel("新图:", self)        self.newLab.setGeometry(420, 50, 400, 400)  # 设置相对地位        self.newLab.setStyleSheet("background-color:white")        # 按钮        self.openBtn = QPushButton(" 关上文件", self)        self.openBtn.setGeometry(10, 10, 80, 30)        self.grayBtn = QPushButton(" 灰度解决", self)        self.grayBtn.setGeometry(100, 10, 80, 30)        self.carCheckBtn = QPushButton(" 视频检测", self)        self.carCheckBtn.setGeometry(200, 10, 80, 30)

关上文件办法

 def openFile(self):        """        关上文件的处理函数        :return;        :return:        """        print("关上图片")        self.img,imgType = QFileDialog.getOpenFileName(self, "关上图片", "", "*.jpg;;*.png;;ALL FILES(*)")        print(self.img)        #jpg = QPixmap(self.img)        self.leftLab.setPixmap(QPixmap(self.img))        self.leftLab.setScaledContents(True)

图像变灰度并车辆识别方法
外汇专业术语https://www.fx61.com/definitions

    def imgGray(self):        print("灰度")        img1 = cv2.imread(self.img)        #1. 灰度化解决        img_gray = cv2.cvtColor(img1, cv2.COLOR_RGB2GRAY)        # BGR = cv2.cvtColor(module,cv2.COLOR_BGR2RGB)# 转化为RGB格局        # ret,thresh = cv2.threshold(gray, 200, 255, cv2.THRESH_BINARY)#二值化        #2. 加载级联分类器        car_detector = cv2.CascadeClassifier("./cars.xml")        """        image--图片像素数据        scaleFactor=None,缩放比例        minNeighbors=None,2  写2就是3        flags =None, 标记位 用什么来进行检测        minSize=None,最小的尺寸        maxSize=None,最大的尺寸        self, image, scaleFactor=None, minNeighbors=None, flags=None, minSize=None, maxSize=None        """        #3. 检测车辆  多尺度检测,失去车辆的坐标定位        cars = car_detector.detectMultiScale(img_gray, 1.05, 2, cv2.CASCADE_SCALE_IMAGE, (20,20), (100,100))        print(cars)        #(274  46  28  28) --(x,y,w,h)        #4. 在车的定位上画图        for(x, y, w, h) in cars:            print(x, y, w, h)            #img, pt1, pt2, color, thickness = None, lineType = None, shift = None            cv2.rectangle(img1,(x,y), (x+w, y+h), (255, 255, 255), 1, cv2.LINE_AA)        # 保留图片        img_gray_name = "3.png"  # 文件名        cv2.imwrite(img_gray_name, img1)  # 保留        # 显示再控件下面        self.newLab.setPixmap(QPixmap(img_gray_name))        self.newLab.setScaledContents(True)

视频车辆辨认

视频关上且识别方法

    def carCheck(self):        print("车流检测")        # parent: QWidget = None, caption: str = '', directory: str = '', filter:        #1. 抉择视频        video, videoType = QFileDialog.getOpenFileName(self, "关上视频", "", "*.mp4")        print(video, videoType)        # video --关上的视频filename        #2. 读取加载视频        cap = cv2.VideoCapture(video)        #3.读取一帧图片        while True:            status,img = cap.read()            if status:                # 灰度                gray = cv2.cvtColor(img, cv2.COLOR_RGB2GRAY)                # 2. 加载级联分类器                car_detector = cv2.CascadeClassifier("./cars.xml")                cars = car_detector.detectMultiScale(gray, 1.2, 2, cv2.CASCADE_SCALE_IMAGE, (25, 25), (200, 200))                # 画框框                for (x, y, w, h) in cars:                    print(x, y, w, h)                    # img, pt1, pt2, color, thickness = None, lineType = None, shift = None                    cv2.rectangle(img, (x, y), (x + w, y + h), (255, 255, 255), 1, cv2.LINE_AA)                print("实时车流量", len(cars))                text = 'car number: '+str(len(cars))                # 增加文字                cv2.putText(img, text, (350, 100), cv2.FONT_HERSHEY_SIMPLEX, 1.2, (255, 255, 0), 2)                cv2.imshow("opencv", img)                key = cv2.waitKey(10)  # 延时并且监听按键                if key == 27:                    break            else:                break        # 开释资源        cap.release()        cv2.destroyAllWindows()

主函数

if __name__ == "__main__":    app = QApplication(sys.argv)  #创立一个应用程序    win = mainWin()  #实例化对象    win.show()  #显示窗口    sys.exit(app.exec_())