Ejemplo n.º 1
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="5", pady="5")
        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)
        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="")
        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_pic_ctl.pack(anchor="se", pady="5")
        self.predictor = predict.CardPredictor()
        self.predictor.train_svm()
Ejemplo n.º 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("License Plate Recognition")
        win.state("zoomed")
        self.pack(fill=tk.BOTH, expand=tk.YES, padx="5", pady="5")
        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='Orjgin Image:').pack(anchor="nw")
        ttk.Label(frame_right1, text='Plate Position:').grid(column=0,
                                                             row=0,
                                                             sticky=tk.W)

        from_pic_ctl = ttk.Button(frame_right2,
                                  text="Choose Image",
                                  width=20,
                                  command=self.from_pic)
        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='Results:').grid(column=0,
                                                      row=2,
                                                      sticky=tk.W)
        self.r_ctl = ttk.Label(frame_right1, text="")
        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_pic_ctl.pack(anchor="se", pady="5")
        self.predictor = predict.CardPredictor()
        self.predictor.train_svm()
Ejemplo n.º 3
0
    def __init__(self, win):
        ttk.Frame.__init__(self, win)
        #界面名称
        win.title("车牌识别")
        win.state("normal")
        self.pack(fill=tk.BOTH, expand=tk.YES, padx="5", pady="5")

        #创建3块矩形区域,作为容器来布局图形界面
        ############################################frame_left主要用来显示待识别的图像##################################################
        frame_left = ttk.Frame(self)
        frame_left.pack(side=LEFT, expand=1, fill=BOTH)

        ttk.Label(frame_left, text='input picture:',
                  font=('Arial', 20)).pack(anchor="nw", padx=30)
        self.image_ctl = ttk.Label(frame_left)
        self.image_ctl.pack(anchor="nw")
        ############################################################################################################################

        ############################################frame_right1主要用来显示识别结果##################################################
        frame_right1 = ttk.Frame(self)
        frame_right1.pack(side=TOP, expand=1, fill=tk.Y)

        ttk.Label(frame_right1,
                  text='license plate segmentation:',
                  font=('Arial', 20)).grid(column=0, row=0, sticky=tk.W)

        self.roi_ctl = ttk.Label(frame_right1, font=('Arial', 20))
        self.roi_ctl.grid(column=0, row=1)

        ttk.Label(frame_right1, text='recognition result:',
                  font=('Arial', 20)).grid(column=0, row=10, sticky=tk.SW)

        self.r_ctl = ttk.Label(frame_right1, text="", font=('Arial', 20))
        self.r_ctl.grid(column=0, row=11)

        # self.color_ctl = ttk.Label(frame_right1, text = "", font = ('Arial', 20), width = "20")
        # self.color_ctl.grid(column = 0, row = 12, sticky = tk.SW)
        ############################################################################################################################

        ############################################frame_right2主要用来选择倒入图片的方式##################################################
        frame_right2 = ttk.Frame(self)
        frame_right2.pack(side=RIGHT, expand=0)

        ttk.Style().configure('TButton', font=('Arial', 20))
        #创建一个button,用于从文件路径中读取待识别图片,回调函数为from_folder
        from_folder_ctl = ttk.Button(frame_right2,
                                     text="chose picture from folder",
                                     width=30,
                                     command=self.from_folder)
        from_folder_ctl.pack(anchor="se", pady="5")
        ############################################################################################################################

        self.predictor = predict.CardPredictor()
        self.predictor.train_svm()
Ejemplo n.º 4
0
    def Get_Plate(self):
        # get the license plate, the color one need to recognize color
        photopro = PhotoPro(self.image_path)
        color_plate = photopro.Get_Image()

        # create a object from predict which can recognize plate
        cpd = predict.CardPredictor()
        cpd.train_svm()
        # write plate
        cv2.imwrite('test.jpg', color_plate)
        return cv2.imread('./test.jpg')
Ejemplo n.º 5
0
Archivo: main.py Proyecto: zhsomin/DMR
    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("数字表识别")
        w, h = win.maxsize()
        win.geometry("{}x{}".format(w, h))
        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)

        start_ctl = ttk.Button(frame_right2,
                               text="拍照",
                               width=20,
                               command=self.start_vedio)
        send_ctl = ttk.Button(frame_right2,
                              text="上传",
                              width=20,
                              command=self.send)
        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="")
        self.r_ctl.grid(column=0, row=3, sticky=tk.W)
        from_pic_ctl.pack(anchor="se", pady="10")
        from_vedio_ctl.pack(anchor="se", pady="10")

        start_ctl.pack(anchor="se", pady="10")

        send_ctl.pack(anchor="se", pady="10")

        self.predictor = predict.CardPredictor()
        self.predictor.train_svm()
Ejemplo n.º 6
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")
		win.maxsize(1000, 800)
		win.minsize(600, 600)
		self.pack(fill=tk.BOTH, expand=tk.YES, padx="5", pady="5")

		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)
		ttk.Label(frame_right1, text='是否是库内车辆:').grid(column=0, row=2, sticky=tk.W)
		ttk.Label(frame_right1, text='进入时间:').grid(column=0, row=4, sticky=tk.W)
		ttk.Label(frame_right1, text='出来时间:').grid(column=0, row=6, 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)

		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)

		self.positon = ttk.Label(frame_right1)
		self.positon.grid(column=0, row=3, sticky=tk.W)

		self.first_time = ttk.Label(frame_right1)
		self.first_time.grid(column=0, row=5, sticky=tk.W)

		self.final_time = ttk.Label(frame_right1)
		self.final_time.grid(column=0, row=7, sticky=tk.W)

		ttk.Label(frame_right1, text='识别结果:').grid(column=0, row=8, sticky=tk.W)
		self.r_ctl = ttk.Label(frame_right1, text="")
		self.r_ctl.grid(column=0, row=9, sticky=tk.W)

		self.color_ctl = ttk.Label(frame_right1, text="", width="20")
		self.color_ctl.grid(column=0, row=10, sticky=tk.W)


		from_vedio_ctl.pack(anchor="se", pady="5")
		from_pic_ctl.pack(anchor="se", pady="5")
		self.predictor = predict.CardPredictor()
		self.predictor.train_svm()
Ejemplo n.º 7
0
    def __init_gui(self):

        # self.currentBroadValue = '123'
        self.window = tk.Tk()
        self.window.wm_title('AIOT智能交通综合案例')
        # books = ('颜色检测', '物体识别 ', 'd', \
        #          '涂鸦检测','结束检测')
        self.window.config(background='#FFFFFF')
        self.canvas = ICanvas(self.window, width=320, height=240)
        self.canvas.grid(row=0, column=0)
        self.fm_control = tk.Frame(self.window,
                                   width=200,
                                   height=240,
                                   background='#FFFFFF')
        self.fm_control.grid(row=0, column=1, padx=10, pady=2)

        # self.fm_status = tk.Frame(self.window, width=320, height=120, background='#FFFFFF')
        # self.fm_status.grid(row=1, column=0, padx=0, pady=2)
        self.lbStatus = tk.Label(self.fm_control,
                                 text='提示:没有需要识别的...',
                                 bg='Yellow',
                                 justify='left',
                                 anchor='w')
        self.lbStatus.place(x=0, y=10, width=320, height=30)
        self.lbValue = tk.Label(self.fm_control,
                                text='等待识别中... ',
                                bg='Green',
                                justify='left',
                                anchor='w')
        self.lbValue.place(x=0, y=70, width=320, height=30)
        self.predictor = predict.CardPredictor()
        self.predictor.train_svm()

        # self.fm_title = tk.Frame(self.window, width=200, height=120, background='#FFFFFF')
        # self.fm_title.grid(row=1, column=1, padx=0, pady=2)
        # self.lbCue = tk.Label(self.fm_title, text='提示:点击上方按钮,选择需要识别的... ', bg='Blue', fg='White',justify='left', anchor='w')
        # self.lbCue.place(x=0, y=30, width=200, height=50)
        self.__action_read_frame()
Ejemplo n.º 8
0
    def __init__(self):
        # 设置不显示警告
        global ser
        global c

        GPIO.setwarnings(False)

        # 设置读取面板针脚模式

        # 将引脚设置为输入模式

        GPIO.setmode(GPIO.BCM)
        # 设置读取针脚标号

        GPIO.setup(4, GPIO.IN)

        # GPIO.setup(2, GPIO.OUT)
        # 串口初始化
        ser = serial.Serial("/dev/ttyAMA0", 9600, timeout=0)
        time.sleep(1)
        c = predict.CardPredictor()

        c.train_svm()
        print('init ok!')
Ejemplo n.º 9
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_center = ttk.Frame(self)

        win.title("车牌识别")
        win.state("zoomed")
        self.pack(fill=tk.BOTH, expand=tk.YES, padx="5", pady="5")
        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)
        frame_center.pack(side=LEFT, expand=1, fill=BOTH)

        Label(frame_center,
              text="==\n|欢|\n|迎|\n|使|\n|用|\n|车|\n|牌|\n|识|\n|别|\n|系|\n|统|\n==",
              fg="red",
              font='Helvetica -49 bold').pack(anchor="nw")

        Label(frame_left, text='原图:',
              font='Helvetica -27 bold').pack(anchor="nw")
        Label(frame_right1, text='车牌位置:',
              font='Helvetica -27 bold').grid(column=0, row=0, sticky=tk.W)

        from_pic_ctl = Button(frame_right2,
                              text="来自图片",
                              font='Helvetica -29 bold',
                              bg="grey",
                              fg="yellow",
                              width=20,
                              command=self.from_pic)

        from_vedio_ctl = Button(frame_right2,
                                text="来自摄像头",
                                font='Helvetica -29 bold',
                                bg="grey",
                                fg="yellow",
                                width=20,
                                command=self.from_vedio)

        button3 = Button(frame_right2,
                         text="api再识别",
                         font='Helvetica -29 bold',
                         bg="grey",
                         fg="yellow",
                         width=20,
                         command=self.api)

        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)
        Label(frame_right1, text='识别结果:',
              font='Helvetica -29 bold').grid(column=0, row=2, sticky=tk.W)
        self.r_ctl = ttk.Label(frame_right1, text="")
        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")
        button3.pack(anchor="se", pady="5")
        self.predictor = predict.CardPredictor()
        self.predictor.train_svm()
Ejemplo n.º 10
0
def detect_carnumber(img_bgr, box):  #r1, r2, r3, r4
    predictor = predict.CardPredictor()
    img_bgr = img_bgr[box[0]:box[1], box[2]:box[3]]
    r = predictor.predict(img_bgr)
    return r
Ejemplo n.º 11
0
def main():
    try:
        # 1-设备与环境初始化
        picdir = os.path.join(os.path.dirname(os.path.realpath(__file__)),
                              'lib_E-ink/pic')  # 设置路径
        libdir = os.path.join(os.path.dirname(os.path.realpath(__file__)),
                              'lib_E-ink/lib')
        if os.path.exists(libdir):
            sys.path.append(libdir)
        logging.basicConfig(level=logging.DEBUG)

        # 摄像头
        camera = cv2.VideoCapture(0)  # 定义摄像头对象,参数0表示第一个摄像头,默认640x480
        # camera.set(cv2.CAP_PROP_FRAME_WIDTH,  960)  # 重设获取图像分辨率(predict.py设定了最大1000)
        # camera.set(cv2.CAP_PROP_FRAME_HEIGHT, 540)  # 图像越大处理速度越慢,树莓派不开超频时会卡
        if camera is None:  # 摄像头打开失败
            print(u'检测摄像头是否连接正常!')
            exit()
        fps = 24  # 帧率

        # 水墨屏
        epd = epd1in54_V2.EPD()
        logging.info("E-ink Init & Clear")
        epd.init()
        epd.Clear(0xFF)
        image = Image.open(os.path.join(picdir, 'USST.bmp'))  # read bmp file
        epd.display(epd.getbuffer(image))  # 欢迎界面
        time.sleep(2)

        # 绘制的图像界面
        image = Image.open(os.path.join(picdir, '1in54.bmp'))
        draw = ImageDraw.Draw(image)  # 相当于清屏,得到当前图像对象句柄

        font20 = ImageFont.truetype(os.path.join(picdir, 'Font.ttc'),
                                    20)  # 字体,高20个像素
        font24 = ImageFont.truetype(os.path.join(picdir, 'Font.ttc'),
                                    24)  # 字体,高24个像素
        font30 = ImageFont.truetype(os.path.join(picdir, 'Font.ttc'), 30)

        draw.text((0, 89), u'   界面初始化   ', font=font30,
                  fill=0)  # PIL库还提供很多绘制函数,十分方便
        draw.text((5, 165), u'CPU:     °C GPU:     °C', font=font20, fill=0)
        draw.rectangle((70, 4, 180, 30), fill=255)
        draw.text((70, 4), time.strftime('%m/%d/%Y'), font=font24, fill=0)
        epd.display(epd.getbuffer(image))

        # 向量机图像学习分类训练
        predictor = predict.CardPredictor()
        predictor.train_svm()
        logging.info(u'SVM学习训练完毕')

        refershsign = 0  # 刷新墨水屏的标记;0不刷新,1刷新
        lastrefreshtime = 0  # 记录墨水屏上次刷新的时间
        lastcarchar = None
        while True:
            start = time.time()
            res, cur_frame = camera.read()  # 读取视频流
            if res != True:
                break
            end = time.time()
            seconds = end - start
            if seconds < 1.0 / fps:  # 按帧速处理,这里其实可以可以除掉了,因为这里视频输出帧率已经无法保证
                time.sleep(1.0 / fps - seconds)

            # 若检测按下ESC键,则退出程序
            key = cv2.waitKey(10) & 0xff
            if key == 27:
                break

            # 车牌识别
            carchar, roi, color = predictor.predict(
                cur_frame)  # 返回识别到的字符,定位的车牌图像,车牌颜色
            if carchar is not None:
                print(u'识别结果:{0:s}\n'.format(
                    carchar.decode('utf-8')))  # Python2对中文字符不直接支持的问题
                if carchar != lastcarchar:  # 说明与上次识别的结果不一致,需要刷新下墨水屏
                    refershsign = 1
                    lastcarchar = carchar
            else:
                lastcarchar = None
                continue

            # 当有新的识别结果,且满足刷新频率时(2s/次),更新墨水屏显示
            if (time.time() - lastrefreshtime) > 2 and refershsign == 1:
                draw.rectangle((10, 75, 190, 150), fill=255)
                draw.text((10, 75), u'      识别成功!   ', font=font24, fill=0)
                draw.text((35, 110),
                          carchar.decode('utf-8'),
                          font=font30,
                          fill=0)

                draw.rectangle((70, 38, 180, 65), fill=255)
                draw.text((70, 38),
                          time.strftime('   %H:%M:%S'),
                          font=font24,
                          fill=0)

                draw.rectangle((50, 165, 70, 198), fill=255)
                draw.text((50, 165),
                          str(int(get_cpu_temp())),
                          font=font20,
                          fill=0)

                draw.rectangle((145, 165, 168, 198), fill=255)
                draw.text((145, 165),
                          str(int(get_gpu_temp())),
                          font=font20,
                          fill=0)

                epd.displayPart(epd.getbuffer(image))  # 局部刷新显示
                lastrefreshtime = time.time()
                refershsign = 0

        camera.release()  # 释放摄像头
        cv2.destroyAllWindows()  # 关闭所有图像窗口
        logging.info("E-Ink Clear...")  # 墨水屏清屏
        epd.init()
        epd.Clear(0xFF)
        epd.sleep()

    # 异常处理
    except IOError as e:
        logging.info(e)

    except KeyboardInterrupt:
        logging.info("ctrl + c:")
        epd1in54_V2.epdconfig.module_exit()
        exit()