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()
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()
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()
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()
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")