Пример #1
0
    def __init__(self, win):
        ttk.Frame.__init__(self, win)

        # win.title("车牌识别系统")
        # win.geometry('+300+200')
        # win.minsize(UI_main.width,UI_main.height)
        # win.configure(relief=tk.RIDGE)
        # win.update()

        self.pack(fill=tk.BOTH)
        frame_left = ttk.Frame(self)
        frame_right_1 = ttk.Frame(self)
        frame_right_2 = ttk.Frame(self)
        frame_left.pack(side=tk.LEFT, expand=1, fill=tk.BOTH)
        frame_right_1.pack(side=tk.TOP, expand=1, fill=tk.Y)
        frame_right_2.pack()

        #界面左边 --->车牌识别主界面大图片
        self.image_ctl = ttk.Label(frame_left)
        self.image_ctl.pack()

        #界面右边 --->定位车牌位置、识别结果
        # ttk.Label(frame_right_1, text='定位车牌:', font=('Times', '14')).grid(
        #     column=0, row=6, sticky=tk.NW)

        self.roi_ct2 = ttk.Label(frame_right_1)
        self.roi_ct2.grid(column=0, row=7, sticky=tk.W, pady=5)
        # ttk.Label(frame_right_1, text='识别结果:', font=('Times', '14')).grid(
        #     column=0, row=8, sticky=tk.W,pady=5)
        self.r_ct2 = ttk.Label(frame_right_1, text="", font=('Times', '20'))
        # self.r_ct2.grid(column=0, row=9, sticky=tk.W,pady=5)

        #车牌颜色
        self.color_ct2 = ttk.Label(frame_right_1,
                                   background=self.colorimg,
                                   text="",
                                   width="4",
                                   font=('Times', '14'))
        # self.color_ct2.grid(column=0, row=10, sticky=tk.W)

        #界面右下角
        from_pic_ctl = ttk.Button(frame_right_2,
                                  text="车牌图片",
                                  width=20,
                                  command=self.from_pic)
        from_pic_ctl.grid(column=0, row=1)
        #
        # #清除识别数据
        # from_pic_chu = ttk.Button(
        #     frame_right_2, text="清除识别数据", width=20, command=self.clean)
        # from_pic_chu.grid(column=0, row=2)
        # #查看图像处理过程
        # from_pic_chu = ttk.Button(
        #     frame_right_2, text="查看图像处理过程", width=20, command=self.pic_chuli)
        # from_pic_chu.grid(column=0, row=3)

        # self.clean()

        self.predictor = predict.CardPredictor()
        self.predictor.train_svm()
Пример #2
0
    def __init__(self, win):
        ttk.Frame.__init__(self, win)
        frame_left = ttk.Frame(self)
        frame_right1 = ttk.Frame(self)
        frame_right2 = ttk.Frame(self)
        win.title("车牌识别")
        win.state("zoomed")
        self.pack(fill=tk.BOTH, expand=tk.YES, padx="10", pady="10")
        frame_left.pack(side=LEFT, expand=1, fill=BOTH)
        frame_right1.pack(side=TOP, expand=1, fill=tk.Y)
        frame_right2.pack(side=RIGHT, expand=0)
        ttk.Label(frame_left, text='原图:').pack(anchor="nw")
        ttk.Label(frame_right1, text='形状定位车牌位置:').grid(column=0,
                                                       row=0,
                                                       sticky=tk.W)

        from_pic_ctl = ttk.Button(frame_right2,
                                  text="来自图片",
                                  width=20,
                                  command=self.from_pic)
        from_vedio_ctl = ttk.Button(frame_right2,
                                    text="来自摄像头",
                                    width=20,
                                    command=self.from_vedio)
        from_img_pre = ttk.Button(frame_right2,
                                  text="查看形状预处理图像",
                                  width=20,
                                  command=self.show_img_pre)
        self.image_ctl = ttk.Label(frame_left)
        self.image_ctl.pack(anchor="nw")

        self.roi_ctl = ttk.Label(frame_right1)
        self.roi_ctl.grid(column=0, row=1, sticky=tk.W)
        ttk.Label(frame_right1, text='形状定位识别结果:').grid(column=0,
                                                       row=2,
                                                       sticky=tk.W)
        self.r_ctl = ttk.Label(frame_right1, text="", font=('Times', '20'))
        self.r_ctl.grid(column=0, row=3, sticky=tk.W)
        self.color_ctl = ttk.Label(frame_right1, text="", width="20")
        self.color_ctl.grid(column=0, row=4, sticky=tk.W)
        from_vedio_ctl.pack(anchor="se", pady="5")
        from_pic_ctl.pack(anchor="se", pady="5")
        from_img_pre.pack(anchor="se", pady="5")

        ttk.Label(frame_right1, text='颜色定位车牌位置:').grid(column=0,
                                                       row=5,
                                                       sticky=tk.W)
        self.roi_ct2 = ttk.Label(frame_right1)
        self.roi_ct2.grid(column=0, row=6, sticky=tk.W)
        ttk.Label(frame_right1, text='颜色定位识别结果:').grid(column=0,
                                                       row=7,
                                                       sticky=tk.W)
        self.r_ct2 = ttk.Label(frame_right1, text="", font=('Times', '20'))
        self.r_ct2.grid(column=0, row=8, sticky=tk.W)
        self.color_ct2 = ttk.Label(frame_right1, text="", width="20")
        self.color_ct2.grid(column=0, row=9, sticky=tk.W)

        self.predictor = predict.CardPredictor()
        self.predictor.train_svm()
Пример #3
0
    def __init__(self):
        # 车牌颜色

        self.color_ct2 = ttk.Label(background=self.colorimg,
                                   text="",
                                   width="4",
                                   font=('Times', '14'))

        self.predictor = predict.CardPredictor()
        self.predictor.train_svm()
Пример #4
0
    def __init__(self, win):
        ttk.Frame.__init__(self, win)
        frame_left = ttk.Frame(self)
        frame_right1 = ttk.Frame(self)
        frame_right2 = ttk.Frame(self)
        top = ttk.Frame(self)
        win.title("车牌识别")
        win.minsize(850, 700)
        # win.wm_attributes('-topmost', 1)
        self.center_window()

        top.pack(side=TOP, expand=1, fill=tk.Y)
        reset_ctl = ttk.Button(top, text="重置窗口", width=10, command=self.reset)
        reset_ctl.pack(side=LEFT)
        L1 = ttk.Label(top, text='网络地址:')
        L1.pack(side=LEFT)
        self.p1 = StringVar()
        self.user_text = ttk.Entry(top, textvariable=self.p1, width=45)
        self.user_text.pack(side=LEFT)
        self.user_text.bind('<Key-Return>', self.url_pic2)
        url_ctl = ttk.Button(top,
                             text="识别网络图片",
                             width=20,
                             command=self.url_pic)
        url_ctl.pack(side=RIGHT)

        self.pack(fill=tk.BOTH, expand=tk.YES, padx="10", pady="10")
        frame_left.pack(side=LEFT, expand=1)
        frame_right1.pack(side=TOP, expand=1, fill=tk.Y)
        frame_right2.pack(side=RIGHT, expand=0)
        #ttk.Label(frame_left, text='地址:').pack(anchor="nw")

        self.image_ctl = ttk.Label(frame_left)
        self.image_ctl.pack(anchor="nw")

        ttk.Label(frame_right1, text='形状定位车牌位置:').grid(column=0,
                                                       row=0,
                                                       sticky=tk.W)
        from_pic_ctl = ttk.Button(frame_right2,
                                  text="来自图片",
                                  width=20,
                                  command=self.from_pic)
        from_vedio_ctl = ttk.Button(frame_right2,
                                    text="打开/关闭摄像头",
                                    width=20,
                                    command=self.from_vedio)
        from_video_ctl = ttk.Button(frame_right2,
                                    text="拍照并识别",
                                    width=20,
                                    command=self.video_pic)
        from_img_pre = ttk.Button(frame_right2,
                                  text="查看预处理图像",
                                  width=20,
                                  command=self.show_img_pre)
        clean_ctrl = ttk.Button(frame_right2,
                                text="清除识别数据",
                                width=20,
                                command=self.clean)
        exit_ctrl = ttk.Button(frame_right2,
                               text="api再次识别",
                               width=20,
                               command=self.api_ctl)
        self.cut_ctrl = ttk.Button(frame_right2,
                                   text="截图识别",
                                   width=20,
                                   command=self.cut_pic)
        camera_ctrl = ttk.Button(frame_right2,
                                 text="开关摄像头实时识别(测试)",
                                 width=20,
                                 command=self.camera_flag)

        self.roi_ctl = ttk.Label(frame_right1)
        self.roi_ctl.grid(column=0, row=1, sticky=tk.W)
        ttk.Label(frame_right1, text='形状定位识别结果:').grid(column=0,
                                                       row=2,
                                                       sticky=tk.W)
        self.r_ctl = ttk.Label(frame_right1, text="", font=('Times', '20'))
        self.r_ctl.grid(column=0, row=3, sticky=tk.W)
        self.color_ctl = ttk.Label(frame_right1, text="", width="20")
        self.color_ctl.grid(column=0, row=4, sticky=tk.W)
        self.cut_ctrl.pack(anchor="se", pady="5")
        camera_ctrl.pack(anchor="se", pady="5")
        from_vedio_ctl.pack(anchor="se", pady="5")
        from_video_ctl.pack(anchor="se", pady="5")
        from_pic_ctl.pack(anchor="se", pady="5")
        from_img_pre.pack(anchor="se", pady="5")
        clean_ctrl.pack(anchor="se", pady="5")
        exit_ctrl.pack(anchor="se", pady="5")

        ttk.Label(frame_right1,
                  text='-------------------------------').grid(column=0,
                                                               row=5,
                                                               sticky=tk.W)
        ttk.Label(frame_right1, text='颜色定位车牌位置:').grid(column=0,
                                                       row=6,
                                                       sticky=tk.W)
        self.roi_ct2 = ttk.Label(frame_right1)
        self.roi_ct2.grid(column=0, row=7, sticky=tk.W)
        ttk.Label(frame_right1, text='颜色定位识别结果:').grid(column=0,
                                                       row=8,
                                                       sticky=tk.W)
        self.r_ct2 = ttk.Label(frame_right1, text="", font=('Times', '20'))
        self.r_ct2.grid(column=0, row=9, sticky=tk.W)
        self.color_ct2 = ttk.Label(frame_right1, text="", width="20")
        self.color_ct2.grid(column=0, row=10, sticky=tk.W)
        ttk.Label(frame_right1,
                  text='-------------------------------').grid(column=0,
                                                               row=11,
                                                               sticky=tk.W)

        self.clean()
        self.apistr = None
        img_excel.create_excel()
        img_sql.create_sql()

        self.predictor = predict.CardPredictor()
        self.predictor.train_svm()
Пример #5
0
    def __init__(self, win):
        ttk.Frame.__init__(self, win)
        frame_left = ttk.Frame(self)
        frame_right1 = ttk.Frame(self)
        frame_right2 = ttk.Frame(self)
        # frame作为框架

        win.title("车牌识别")
        screenwidth = self.winfo_screenwidth()
        screenheight = self.winfo_screenheight()
        size = '%dx%d+%d+%d' % (950, 700, (screenwidth - 950) / 2, (screenheight - 700) / 2)
        # 设置页面大小 居中显示

        print(size)
        win.geometry(size)
        win.minsize(950,700)
        self.pack(fill=tk.BOTH, expand=tk.YES, padx="10", pady="10")
        # padx是上下对称 pady是左右对齐
        # 摆放控件位置
        frame_left.pack(side=LEFT, expand=1, fill=BOTH)
        # fill是填充样式both是横向纵向都填充 expand 1/yes表示中心 0/no表示不能扩展
        # 当side = "left"或side = "right"时,fill = "x"不起作用,只能填充y
        # side =“top”, side = "bottom"时,fill = "y"不起作用,只能填充x

        # side: 按扭停靠在窗口的哪个位置left: 左 top: 上 right: 右 botton: 下
        #   fill: 填充 x: 水平方向填充 y: 竖直方向填充  both: 水平和竖直方向填充 none: 不填充
        #   expand:yes: 扩展整个空白区   no: 不扩展
        #   anchor: N: 北  下   E: 东  右 S: 南  下 W: 西  左 CENTER: 中间
        #   padx: x方向的外边距 pady: y方向的外边距   ipadx: x方向的内边距  ipady:y方向的内边距
        from_pic_ctl = ttk.Button(frame_right2, text="来自图片", width=20, command=self.from_pic)
        from_img_pre = ttk.Button(frame_right2, text="查看形状预处理图像", width=20, command=self.show_img_pre)

        from_pic_ctl.pack(anchor="se", pady="5")
        from_img_pre.pack(anchor="se", pady="5")
        # anchor 可以设置9各参数 表示方向


        frame_right1.pack(side=TOP, expand=1, fill=tk.Y)
        frame_right2.pack(side=RIGHT, expand=0)
        ttk.Label(frame_left, text='原图:').pack(anchor="nw")
        self.image_ctl = ttk.Label(frame_left)
        self.image_ctl.pack(anchor="nw")
        # 图片展示

        ttk.Label(frame_right1, text='轮廓定位车牌位置:').grid(column=0, row=0, sticky=tk.W)

        self.roi_ctl = ttk.Label(frame_right1)
        print("ct1", self.roi_ctl)
        self.roi_ctl.grid(column=0, row=1, sticky=tk.W)
        # grid 列 行 位置

        ttk.Label(frame_right1, text='轮廓定位识别结果:').grid(column=0, row=2, sticky=tk.W)
        self.r_ctl = ttk.Label(frame_right1, text="", font=('Times', '20'),)
        self.r_ctl.grid(column=0, row=3, sticky=tk.W)
        self.color_ctl = ttk.Label(frame_right1, text="", width="20")
        ttk.Label(frame_right1, text='车牌颜色:').grid(column=0, row=4, sticky=tk.W)
        self.color_ctl.grid(column=0, row=5, sticky=tk.W)


        ttk.Label(frame_right1, text='颜色定位车牌位置:').grid(column=0, row=6, sticky=tk.W)
        self.roi_ct2 = ttk.Label(frame_right1)
        print("ct2",self.roi_ct2)
        self.roi_ct2.grid(column=0, row=7, sticky=tk.W)
        ttk.Label(frame_right1, text='颜色定位识别结果:').grid(column=0, row=8, sticky=tk.W)
        self.r_ct2 = ttk.Label(frame_right1, text="",font=('Times', '20'))
        self.r_ct2.grid(column=0, row=9, sticky=tk.W)
        self.color_ct2 = ttk.Label(frame_right1, text="",width="20")
        ttk.Label(frame_right1, text='车牌颜色:').grid(column=0, row=10, sticky=tk.W)
        self.color_ct2.grid(column=0, row=11, sticky=tk.W)

        self.predictor = predict.CardPredictor()
        self.predictor.train_svm()
    def choose_pic(self):

        self.path = getcwd()
        self.predictor = predict.CardPredictor()
        self.predictor.train_svm()

        self.car1 = "你"
        self.car2 = "我"
        self.car3 = "他"

        #界面处理
        fileName_choose, filetype = QFileDialog.getOpenFileName(
            self.centralwidget,
            "选取图片文件",
            self.path,  # 起始路径
            "视频(*.mp4)")  # 文件类型
        print(fileName_choose)
        self.textEdit_pic.setText(fileName_choose + '文件已选中')
        self.label1.setText('正在启动识别系统...\n\nleading')
        self.cap = cv2.VideoCapture(fileName_choose)
        i = 0
        while self.cap.isOpened():
            flag, im_rd = self.cap.read()

            frameClone = im_rd.copy()  # 复制画面

            self.key1 = cv2.resize(frameClone[200:800, 150:650], (600, 600))
            cv2.rectangle(frameClone, (150, 200), (650, 800), (255, 255, 0), 2)

            self.key2 = cv2.resize(frameClone[200:800, 700:1200], (800, 800))
            cv2.rectangle(frameClone, (700, 200), (1200, 800), (0, 255, 0), 2)
            self.key3 = cv2.resize(frameClone[200:800, 1300:1800], (800, 800))
            cv2.rectangle(frameClone, (1300, 200), (1800, 800), (255, 0, 0), 2)
            frameClone = cv2.resize(frameClone, (520, 410))

            # 在Qt界面中显示人脸
            show = cv2.cvtColor(frameClone, cv2.COLOR_BGR2RGB)
            showImage = QtGui.QImage(show.data, show.shape[1], show.shape[0],
                                     QtGui.QImage.Format_RGB888)
            self.label1.setPixmap(QtGui.QPixmap.fromImage(showImage))
            QtWidgets.QApplication.processEvents()
            i = i + 1
            if i == 400:  # 50秒响应一次
                i = 0
                #print((self.key1).type)
                #cv2.imshow("ok",self.key2)
                #img_bgr = cv2.imdecode(self.key1, cv2.IMREAD_COLOR)
                #img_bgr = img_math.img_read("C:/Users/Administrator/Desktop/carddete/img_data/1586768004.jpg")
                # cv2.imshow("dsad",self.key1)

                #第1个

                first_img2, oldimg2 = self.predictor.img_first_pre(self.key1)
                #r_color2, roi_color2, color_color2 = self.predictor.img_color_contours(first_img2, oldimg2)     #字符,定位图像,车牌颜色
                r_color2, roi_color2, color_color2 = self.predictor.img_only_color(
                    oldimg2, oldimg2, first_img2)

                if len(r_color2) > 4:

                    self.label_5.setStyleSheet(
                        "background-image: url(:/newPrefix/images_test/red.png);"
                    )
                    img1 = cv2.resize(roi_color2, (100, 20))
                    #cv2.imshow("ok",img1)
                    showImage = QtGui.QImage(img1.data, img1.shape[1],
                                             img1.shape[0],
                                             QtGui.QImage.Format_RGB888)
                    self.label_result.setPixmap(
                        QtGui.QPixmap.fromImage(showImage))
                    self.label_result_2.setText(r_color2)
                    self.label_5.setText(r_color2)
                    self.car1 = r_color2
                    print(str(self.car1))
                else:
                    self.label_5.setStyleSheet(
                        "background-image: url(:/newPrefix/images_test/green.png);"
                    )
                    self.label_5.setText("NULL")

                    #第三个
                first_img, oldimg = self.predictor.img_first_pre(self.key3)
                # r_c, roi_c, color_c = self.predictor.img_color_contours(first_img, oldimg)     #字符,定位图像,车牌颜色
                r_color, roi_color, color_color = self.predictor.img_only_color(
                    oldimg, oldimg, first_img)
                # print( "|", color_c, r_c, "|", color_color, r_color, "| ")
                # print(len(r_c))

                if len(r_color) > 4:

                    self.label_7.setStyleSheet(
                        "background-image: url(:/newPrefix/images_test/red.png);"
                    )
                    img1 = cv2.resize(roi_color, (100, 20))
                    #cv2.imshow("ok",img1)
                    showImage = QtGui.QImage(img1.data, img1.shape[1],
                                             img1.shape[0],
                                             QtGui.QImage.Format_RGB888)
                    self.label_result_5.setPixmap(
                        QtGui.QPixmap.fromImage(showImage))
                    self.label_result_6.setText(r_color)
                    self.label_7.setText(r_color)
                    self.car3 = r_color
                    #continue
                else:
                    self.label_7.setStyleSheet(
                        "background-image: url(:/newPrefix/images_test/green.png);"
                    )
                    self.label_7.setText("NULL")
                    #self.car3 = "0"

                first_img1, oldimg1 = self.predictor.img_first_pre(self.key2)
                r_color1, roi_color1, color_color1 = self.predictor.img_only_color(
                    oldimg1, oldimg1, first_img1)

                if len(r_color1) > 4:

                    self.label_6.setStyleSheet(
                        "background-image: url(:/newPrefix/images_test/red.png);"
                    )
                    img1 = cv2.resize(roi_color1, (100, 20))
                    #cv2.imshow("ok",img1)
                    showImage = QtGui.QImage(img1.data, img1.shape[1],
                                             img1.shape[0],
                                             QtGui.QImage.Format_RGB888)
                    self.label_result_3.setPixmap(
                        QtGui.QPixmap.fromImage(showImage))
                    self.label_result_4.setText(r_color1)
                    self.label_6.setText(r_color1)
                    self.car2 = r_color1
                    print("ok")
                    print((self.car2))
                else:
                    self.label_6.setStyleSheet(
                        "background-image: url(:/newPrefix/images_test/green.png);"
                    )
                    self.label_6.setText("NULL")