You can not select more than 25 topics Topics must start with a chinese character,a letter or number, can include dashes ('-') and can be up to 35 characters long.

HyperLprGUI.py 24 kB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656
  1. """
  2. Author: youngorsu
  3. Email : zhiyongsu@qq.com
  4. Last edited: 2018.1.29
  5. """
  6. # coding=utf-8
  7. import sys
  8. import os
  9. from PyQt5.QtWidgets import (
  10. QMainWindow,
  11. QLabel,
  12. QLineEdit,
  13. QPushButton,
  14. QHBoxLayout,
  15. QVBoxLayout,
  16. QGridLayout,
  17. QTableWidget,
  18. QWidget,
  19. QAbstractItemView,
  20. QHeaderView,
  21. QGraphicsView,
  22. QGraphicsScene,
  23. QGraphicsPixmapItem,
  24. QSplitter,
  25. QFileDialog,
  26. QTableWidgetItem,
  27. QGraphicsRectItem,
  28. QCheckBox,
  29. QMessageBox,
  30. QGraphicsSimpleTextItem,
  31. qApp,
  32. QApplication)
  33. from PyQt5.QtGui import QIcon, QColor, QPainter, QImage, QPixmap, QPen, QBrush, QFont, QPalette
  34. from PyQt5.QtCore import Qt, QDir, QSize, QEventLoop, QThread, pyqtSignal
  35. from hyperlpr_py3 import pipline as pp
  36. import cv2
  37. import numpy as np
  38. import time
  39. def SimpleRecognizePlateWithGui(image):
  40. t0 = time.time()
  41. images = pp.detect.detectPlateRough(
  42. image, image.shape[0], top_bottom_padding_rate=0.1)
  43. res_set = []
  44. for j, plate in enumerate(images):
  45. plate, rect, origin_plate = plate
  46. plate = cv2.resize(plate, (136, 36 * 2))
  47. t1 = time.time()
  48. plate_color = "蓝"
  49. plate_type = pp.td.SimplePredict(plate)
  50. if (plate_type > 0) and (plate_type < 5):
  51. plate = cv2.bitwise_not(plate)
  52. plate_color = "黄"
  53. image_rgb = pp.fm.findContoursAndDrawBoundingBox(plate)
  54. image_rgb = pp.fv.finemappingVertical(image_rgb)
  55. pp.cache.verticalMappingToFolder(image_rgb)
  56. e2e_plate, e2e_confidence = pp.e2e.recognizeOne(image_rgb)
  57. #print("e2e:", e2e_plate, e2e_confidence)
  58. image_gray = cv2.cvtColor(image_rgb, cv2.COLOR_RGB2GRAY)
  59. #print("校正", time.time() - t1, "s")
  60. t2 = time.time()
  61. val = pp.segmentation.slidingWindowsEval(image_gray)
  62. # print val
  63. #print("分割和识别", time.time() - t2, "s")
  64. if len(val) == 3:
  65. blocks, res, confidence = val
  66. if confidence / 7 > 0.7:
  67. for i, block in enumerate(blocks):
  68. block_ = cv2.resize(block, (24, 24))
  69. block_ = cv2.cvtColor(block_, cv2.COLOR_GRAY2BGR)
  70. image[j * 24:(j * 24) + 24, i * 24:(i * 24) + 24] = block_
  71. if image[j * 24:(j * 24) + 24,
  72. i * 24:(i * 24) + 24].shape == block_.shape:
  73. pass
  74. res_set.append([res,
  75. confidence / 7,
  76. rect,
  77. plate_color,
  78. e2e_plate,
  79. e2e_confidence,
  80. len(blocks)])
  81. #print(time.time() - t0, "s")
  82. return image, res_set
  83. class LicenseRecognizationThread(QThread):
  84. recognization_done_signal = pyqtSignal(list)
  85. def __init__(self, parent=None):
  86. super().__init__(parent)
  87. self.hyperlpr_dir_path = ""
  88. self.filenames = []
  89. def set_parameter(self, filename_list, path):
  90. self.hyperlpr_dir_path = path
  91. self.filenames = filename_list
  92. def run(self):
  93. while True:
  94. time.sleep(1)
  95. if len(self.hyperlpr_dir_path) > 0:
  96. for i in range(0, len(self.filenames)):
  97. path = os.path.join(
  98. self.hyperlpr_dir_path, self.filenames[i])
  99. image = cv2.imdecode(np.fromfile(path, dtype=np.uint8), -1)
  100. image, res_set = SimpleRecognizePlateWithGui(image)
  101. self.recognization_done_signal.emit([i, res_set])
  102. self.hyperlpr_dir_path = ""
  103. class HyperLprImageView(QGraphicsView):
  104. def __init__(self):
  105. super().__init__()
  106. self.init_ui()
  107. def init_ui(self):
  108. scene = QGraphicsScene()
  109. scene.setBackgroundBrush(QColor(100, 100, 100))
  110. scene.setItemIndexMethod(QGraphicsScene.BspTreeIndex)
  111. scene.setSceneRect(scene.itemsBoundingRect())
  112. self.setDragMode(QGraphicsView.RubberBandDrag)
  113. self.setViewportUpdateMode(QGraphicsView.FullViewportUpdate)
  114. self.setRenderHints(QPainter.Antialiasing | QPainter.TextAntialiasing)
  115. self.frame_item = QGraphicsPixmapItem()
  116. self.text_item_offset = 0
  117. self.rect_item_array = []
  118. self.text_item_array = []
  119. for i in range(0, 5):
  120. rect_item = QGraphicsRectItem()
  121. rect_item.setVisible(False)
  122. rect_item.setZValue(20.0)
  123. rect_item.setPen(QPen(Qt.red, 5))
  124. rect_item.setRect(20, 20, 20, 20)
  125. scene.addItem(rect_item)
  126. self.rect_item_array.append(rect_item)
  127. text_item = QGraphicsSimpleTextItem("")
  128. text_item.setBrush(QBrush(Qt.red))
  129. text_item.setZValue(20.0)
  130. text_item.setPos(10, 50)
  131. text_item.setFont(QFont("黑体", 32))
  132. text_item.setVisible(False)
  133. scene.addItem(text_item)
  134. self.text_item_array.append(text_item)
  135. scene.addItem(self.frame_item)
  136. self.curr_factor = 1.0
  137. self.setScene(scene)
  138. def resetRectText(self, res_set):
  139. max_no = len(res_set)
  140. if max_no > 5:
  141. max_no = 5
  142. for i in range(0, 5):
  143. if i < max_no:
  144. curr_rect = res_set[i][2]
  145. self.rect_item_array[i].setRect(int(curr_rect[0]), int(
  146. curr_rect[1]), int(curr_rect[2]), int(curr_rect[3]))
  147. self.rect_item_array[i].setVisible(True)
  148. self.text_item_array[i].setText(
  149. res_set[i][0] + " " + res_set[i][3])
  150. self.text_item_array[i].setPos(
  151. int(curr_rect[0]), int(curr_rect[1]) - 48)
  152. self.text_item_array[i].setVisible(True)
  153. else:
  154. self.text_item_array[i].setVisible(False)
  155. self.rect_item_array[i].setVisible(False)
  156. def wheelEvent(self, event):
  157. factor = event.angleDelta().y() / 120.0
  158. if event.angleDelta().y() / 120.0 > 0:
  159. factor = 1.08
  160. else:
  161. factor = 0.92
  162. if self.curr_factor > 0.1 and self.curr_factor < 10:
  163. self.curr_factor = self.curr_factor * factor
  164. self.scale(factor, factor)
  165. def resetPixmap(self, image):
  166. self.frame_item.setPixmap(QPixmap.fromImage(image))
  167. class HyperLprWindow(QMainWindow):
  168. start_init_signal = pyqtSignal()
  169. def __init__(self):
  170. super().__init__()
  171. self.initUI()
  172. def initUI(self):
  173. self.statusBar().showMessage('Ready')
  174. self.image_window_view = HyperLprImageView()
  175. table_widget_header_labels = [
  176. "文件名",
  177. "分割识别",
  178. "置信度",
  179. "颜色",
  180. "E2E识别",
  181. "E2E置信度"]
  182. self.hyperlpr_tableview = QTableWidget(
  183. 0, len(table_widget_header_labels))
  184. self.hyperlpr_tableview.setHorizontalHeaderLabels(
  185. table_widget_header_labels)
  186. self.hyperlpr_tableview.setSelectionBehavior(
  187. QAbstractItemView.SelectItems)
  188. self.hyperlpr_tableview.setSelectionMode(
  189. QAbstractItemView.SingleSelection)
  190. self.hyperlpr_tableview.setEditTriggers(
  191. QAbstractItemView.NoEditTriggers)
  192. self.hyperlpr_tableview.horizontalHeader().setSectionResizeMode(
  193. QHeaderView.ResizeToContents)
  194. self.hyperlpr_tableview.setEditTriggers(
  195. QAbstractItemView.NoEditTriggers)
  196. self.hyperlpr_tableview.cellClicked.connect(
  197. self.recognize_one_license_plate)
  198. self.location_label = QLabel("车牌目录", self)
  199. self.location_text = QLineEdit(self)
  200. self.location_text.setEnabled(False)
  201. self.location_text.setFixedWidth(300)
  202. self.location_button = QPushButton("...")
  203. self.location_button.clicked.connect(self.select_new_dir)
  204. self.location_layout = QHBoxLayout()
  205. self.location_layout.addWidget(self.location_label)
  206. self.location_layout.addWidget(self.location_text)
  207. self.location_layout.addWidget(self.location_button)
  208. self.location_layout.addStretch()
  209. self.check_box = QCheckBox("与文件名比较车牌")
  210. self.check_box.setChecked(True)
  211. self.update_file_path_button = QPushButton('批量识别')
  212. self.update_file_path_button.clicked.connect(
  213. self.batch_recognize_all_images)
  214. self.update_file_path_layout = QHBoxLayout()
  215. self.update_file_path_layout.addWidget(self.check_box)
  216. self.update_file_path_layout.addWidget(self.update_file_path_button)
  217. self.update_file_path_layout.addStretch()
  218. self.bottom_layout = QVBoxLayout()
  219. self.bottom_layout.addLayout(self.location_layout)
  220. self.bottom_layout.addLayout(self.update_file_path_layout)
  221. bottom_widget = QWidget()
  222. bottom_widget.setLayout(self.bottom_layout)
  223. license_plate_iamge_label = QLabel("车牌图")
  224. self.license_plate_widget = QLabel("")
  225. block_image_label = QLabel("分割图")
  226. self.block_plate_widget = QLabel("")
  227. filename_label = QLabel("文件名:")
  228. self.filename_edit = QLineEdit()
  229. segmentation_recognition_label = QLabel("分割识别:")
  230. self.segmentation_recognition_edit = QLineEdit()
  231. self.segmentation_recognition_edit.setFont(QFont("黑体", 24, QFont.Bold))
  232. self.segmentation_recognition_edit.setStyleSheet("color:red")
  233. confidence_label = QLabel("置信度")
  234. self.confidence_edit = QLineEdit()
  235. self.confidence_edit.setFont(QFont("黑体", 24, QFont.Bold))
  236. self.confidence_edit.setStyleSheet("color:red")
  237. plate_color_label = QLabel("车牌颜色")
  238. self.plate_color_edit = QLineEdit()
  239. self.plate_color_edit.setFont(QFont("黑体", 24, QFont.Bold))
  240. self.plate_color_edit.setStyleSheet("color:red")
  241. e2e_recognization_label = QLabel("e2e识别:")
  242. self.e2e_recognization_edit = QLineEdit()
  243. self.e2e_recognization_edit.setFont(QFont("黑体", 24, QFont.Bold))
  244. self.e2e_recognization_edit.setStyleSheet("color:red")
  245. e2e_confidence_label = QLabel("e2e置信度")
  246. self.e2e_confidence_edit = QLineEdit()
  247. self.e2e_confidence_edit.setFont(QFont("黑体", 24, QFont.Bold))
  248. self.e2e_confidence_edit.setStyleSheet("color:red")
  249. info_gridlayout = QGridLayout()
  250. info_gridlayout.addWidget(filename_label, 0, 0)
  251. info_gridlayout.addWidget(self.filename_edit, 0, 1)
  252. info_gridlayout.addWidget(license_plate_iamge_label, 1, 0)
  253. info_gridlayout.addWidget(self.license_plate_widget, 1, 1)
  254. info_gridlayout.addWidget(block_image_label, 2, 0)
  255. info_gridlayout.addWidget(self.block_plate_widget, 2, 1)
  256. info_gridlayout.addWidget(segmentation_recognition_label, 3, 0)
  257. info_gridlayout.addWidget(self.segmentation_recognition_edit, 3, 1)
  258. info_gridlayout.addWidget(confidence_label, 4, 0)
  259. info_gridlayout.addWidget(self.confidence_edit, 4, 1)
  260. info_gridlayout.addWidget(plate_color_label, 5, 0)
  261. info_gridlayout.addWidget(self.plate_color_edit, 5, 1)
  262. info_gridlayout.addWidget(e2e_recognization_label, 6, 0)
  263. info_gridlayout.addWidget(self.e2e_recognization_edit, 6, 1)
  264. info_gridlayout.addWidget(e2e_confidence_label, 7, 0)
  265. info_gridlayout.addWidget(self. e2e_confidence_edit, 7, 1)
  266. info_widget = QWidget()
  267. info_widget.setLayout(info_gridlayout)
  268. right_splitter = QSplitter(Qt.Vertical)
  269. right_splitter.addWidget(bottom_widget)
  270. right_splitter.addWidget(self.hyperlpr_tableview)
  271. right_splitter.addWidget(info_widget)
  272. right_splitter.setStretchFactor(1, 3)
  273. right_splitter.setStretchFactor(2, 2)
  274. main_splitter = QSplitter(Qt.Horizontal)
  275. main_splitter.addWidget(self.image_window_view)
  276. main_splitter.addWidget(right_splitter)
  277. main_splitter.setStretchFactor(0, 1)
  278. self.image_filename_list = []
  279. self.hyperlpr_dir_path = ""
  280. self.segmentation_recognition_correct_number = 0
  281. self.color_correct_number = 0
  282. self.e2e_recognization_correct_number = 0
  283. self.batch_recognization_thread = LicenseRecognizationThread()
  284. self.batch_recognization_thread.recognization_done_signal.connect(
  285. self.recognization_done_slot)
  286. self.batch_recognization_thread.start()
  287. self.start_init_signal.connect(self.read_path_and_show_one_image)
  288. self.setCentralWidget(main_splitter)
  289. self.setWindowTitle("HyperLPR车牌识别软件v1.0")
  290. self.start_init_signal.emit()
  291. def read_path_and_show_one_image(self):
  292. hyperlpr_dir_info_filepath = QDir.homePath() + "/hyperlpr_dir_file"
  293. if os.path.exists(hyperlpr_dir_info_filepath):
  294. with open(hyperlpr_dir_info_filepath, 'r') as f:
  295. self.hyperlpr_dir_path = f.read()
  296. if len(self.hyperlpr_dir_path) > 0:
  297. self.reset_info_gui()
  298. if len(self.image_filename_list) > 0:
  299. self.recognize_and_show_one_image(self.image_filename_list[0], 0)
  300. def select_new_dir(self):
  301. self.hyperlpr_dir_path = QFileDialog.getExistingDirectory(
  302. self, "读取文件夹", QDir.currentPath())
  303. if len(self.hyperlpr_dir_path) > 0:
  304. hyperlpr_dir_info_filepath = QDir.homePath() + "/hyperlpr_dir_file"
  305. with open(hyperlpr_dir_info_filepath, 'w') as f:
  306. f.write(self.hyperlpr_dir_path)
  307. self.reset_info_gui()
  308. def reset_info_gui(self):
  309. self.location_text.setText(self.hyperlpr_dir_path)
  310. self.scan_files_with_new_dir(self.hyperlpr_dir_path)
  311. self.fill_table_with_new_info()
  312. def scan_files_with_new_dir(self, path):
  313. name_list = os.listdir(path) # 列出文件夹下所有的目录与文件
  314. self.image_filename_list.clear()
  315. for i in range(0, len(name_list)):
  316. if name_list[i].endswith(
  317. ".jpg") or name_list[i].endswith(".png"):
  318. self.image_filename_list.append(name_list[i])
  319. def fill_table_with_new_info(self):
  320. self.hyperlpr_tableview.clearContents()
  321. row_count = self.hyperlpr_tableview.rowCount()
  322. for i in range(row_count, -1, -1):
  323. self.hyperlpr_tableview.removeRow(i)
  324. for i in range(0, len(self.image_filename_list)):
  325. row = self.hyperlpr_tableview.rowCount()
  326. self.hyperlpr_tableview.insertRow(row)
  327. item0 = QTableWidgetItem()
  328. item0.setTextAlignment(Qt.AlignCenter)
  329. self.hyperlpr_tableview.setItem(row, 0, item0)
  330. self.hyperlpr_tableview.item(
  331. row, 0).setText(
  332. self.image_filename_list[i])
  333. item1 = QTableWidgetItem()
  334. item1.setTextAlignment(Qt.AlignCenter)
  335. self.hyperlpr_tableview.setItem(row, 1, item1)
  336. item2 = QTableWidgetItem()
  337. item2.setTextAlignment(Qt.AlignCenter)
  338. self.hyperlpr_tableview.setItem(row, 2, item2)
  339. item3 = QTableWidgetItem()
  340. item3.setTextAlignment(Qt.AlignCenter)
  341. self.hyperlpr_tableview.setItem(row, 3, item3)
  342. item4 = QTableWidgetItem()
  343. item4.setTextAlignment(Qt.AlignCenter)
  344. self.hyperlpr_tableview.setItem(row, 4, item4)
  345. item5 = QTableWidgetItem()
  346. item5.setTextAlignment(Qt.AlignCenter)
  347. self.hyperlpr_tableview.setItem(row, 5, item5)
  348. def recognize_one_license_plate(self, row, col):
  349. if col == 0 and row < len(self.image_filename_list):
  350. self.recognize_and_show_one_image(
  351. self.image_filename_list[row], row)
  352. def recognize_and_show_one_image(self, image_filename_text, row):
  353. if image_filename_text.endswith(".jpg"):
  354. path = os.path.join(self.hyperlpr_dir_path, image_filename_text)
  355. image = cv2.imdecode(np.fromfile(path, dtype=np.uint8), -1)
  356. image, res_set = SimpleRecognizePlateWithGui(image)
  357. img = QImage(
  358. image.data,
  359. image.shape[1],
  360. image.shape[0],
  361. image.shape[1] * image.shape[2],
  362. QImage.Format_RGB888)
  363. self.image_window_view.resetPixmap(img.rgbSwapped())
  364. self.image_window_view.resetRectText(res_set)
  365. if len(res_set) > 0:
  366. curr_rect = res_set[0][2]
  367. image_crop = image[int(curr_rect[1]):int(
  368. curr_rect[1] + curr_rect[3]), int(curr_rect[0]):int(curr_rect[0] + curr_rect[2])]
  369. curr_plate = cv2.resize(image_crop, (136, 72))
  370. plate_img = QImage(
  371. curr_plate.data,
  372. curr_plate.shape[1],
  373. curr_plate.shape[0],
  374. curr_plate.shape[1] *
  375. curr_plate.shape[2],
  376. QImage.Format_RGB888)
  377. self.license_plate_widget.setPixmap(
  378. QPixmap.fromImage(plate_img.rgbSwapped()))
  379. # print(res_set[0][6])
  380. block_crop = image[0:24, 0:(24 * int(res_set[0][6]))]
  381. curr_block = cv2.resize(
  382. block_crop, (24 * int(res_set[0][6]), 24))
  383. block_image = QImage(
  384. curr_block.data,
  385. curr_block.shape[1],
  386. curr_block.shape[0],
  387. curr_block.shape[1] *
  388. curr_block.shape[2],
  389. QImage.Format_RGB888)
  390. self.block_plate_widget.setPixmap(
  391. QPixmap.fromImage(block_image.rgbSwapped()))
  392. self.segmentation_recognition_edit.setText(res_set[0][0])
  393. self.filename_edit.setText(image_filename_text)
  394. self.confidence_edit.setText("%.3f" % (float(res_set[0][1])))
  395. self.plate_color_edit.setText(res_set[0][3])
  396. self.e2e_recognization_edit.setText(res_set[0][4])
  397. self.e2e_confidence_edit.setText(
  398. "%.3f" % (float(res_set[0][5])))
  399. else:
  400. self.license_plate_widget.clear()
  401. self.block_plate_widget.clear()
  402. self.segmentation_recognition_edit.setText("")
  403. self.filename_edit.setText("")
  404. self.confidence_edit.setText("")
  405. self.plate_color_edit.setText("")
  406. self.e2e_recognization_edit.setText("")
  407. self.e2e_confidence_edit.setText("")
  408. self.fill_table_widget_with_res_info(res_set, row)
  409. def batch_recognize_all_images(self):
  410. self.segmentation_recognition_correct_number = 0
  411. self.color_correct_number = 0
  412. self.e2e_recognization_correct_number = 0
  413. self.batch_recognization_thread.set_parameter(
  414. self.image_filename_list, self.hyperlpr_dir_path)
  415. def recognization_done_slot(self, result_list):
  416. row = result_list[0]
  417. res_set = result_list[1]
  418. self.fill_table_widget_with_res_info(res_set, row)
  419. if row == len(self.image_filename_list) - 1:
  420. total_number = len(self.image_filename_list)
  421. row_count = self.hyperlpr_tableview.rowCount()
  422. if row_count > total_number:
  423. self.hyperlpr_tableview.removeRow(total_number)
  424. self.hyperlpr_tableview.insertRow(total_number)
  425. item0 = QTableWidgetItem()
  426. item0.setTextAlignment(Qt.AlignCenter)
  427. self.hyperlpr_tableview.setItem(total_number, 0, item0)
  428. self.hyperlpr_tableview.item(
  429. total_number, 0).setText(
  430. "统计结果")
  431. item1 = QTableWidgetItem()
  432. item1.setTextAlignment(Qt.AlignCenter)
  433. self.hyperlpr_tableview.setItem(total_number, 1, item1)
  434. self.hyperlpr_tableview.item(
  435. total_number, 1).setText(
  436. "{0} / {1} = {2: .3f}".format(self.segmentation_recognition_correct_number,total_number,self.segmentation_recognition_correct_number/total_number))
  437. item2 = QTableWidgetItem()
  438. item2.setTextAlignment(Qt.AlignCenter)
  439. self.hyperlpr_tableview.setItem(total_number, 2, item2)
  440. item3 = QTableWidgetItem()
  441. item3.setTextAlignment(Qt.AlignCenter)
  442. self.hyperlpr_tableview.setItem(total_number, 3, item3)
  443. self.hyperlpr_tableview.item(
  444. total_number, 3).setText(
  445. "{0} / {1} = {2: .3f}".format(self.e2e_recognization_correct_number, total_number,
  446. self.e2e_recognization_correct_number / total_number))
  447. item4 = QTableWidgetItem()
  448. item4.setTextAlignment(Qt.AlignCenter)
  449. self.hyperlpr_tableview.setItem(total_number, 4, item4)
  450. self.hyperlpr_tableview.item(
  451. total_number, 4).setText(
  452. "{0} / {1} = {2: .3f}".format(self.color_correct_number, total_number,
  453. self.color_correct_number / total_number))
  454. item5 = QTableWidgetItem()
  455. item5.setTextAlignment(Qt.AlignCenter)
  456. self.hyperlpr_tableview.setItem(total_number, 5, item5)
  457. def fill_table_widget_with_res_info(self, res_set, row):
  458. image_filename_text = self.image_filename_list[row]
  459. if len(res_set) > 0:
  460. self.hyperlpr_tableview.item(row, 1).setText(res_set[0][0])
  461. if res_set[0][0] in image_filename_text:
  462. self.hyperlpr_tableview.item(
  463. row, 1).setForeground(
  464. QBrush(
  465. QColor(
  466. 0, 0, 255)))
  467. self.segmentation_recognition_correct_number += 1
  468. else:
  469. self.hyperlpr_tableview.item(
  470. row, 1).setForeground(
  471. QBrush(
  472. QColor(
  473. 255, 0, 0)))
  474. self.hyperlpr_tableview.item(
  475. row, 2).setText(
  476. "%.3f" %
  477. (float(
  478. res_set[0][1])))
  479. self.hyperlpr_tableview.item(row, 3).setText(res_set[0][3])
  480. if res_set[0][3] in image_filename_text:
  481. self.hyperlpr_tableview.item(
  482. row, 3).setForeground(
  483. QBrush(
  484. QColor(
  485. 0, 0, 255)))
  486. self.color_correct_number += 1
  487. else:
  488. self.hyperlpr_tableview.item(
  489. row, 3).setForeground(
  490. QBrush(
  491. QColor(
  492. 255, 0, 0)))
  493. self.hyperlpr_tableview.item(row, 4).setText(res_set[0][4])
  494. if res_set[0][4] in image_filename_text:
  495. self.hyperlpr_tableview.item(
  496. row, 4).setForeground(
  497. QBrush(
  498. QColor(
  499. 0, 0, 255)))
  500. self.e2e_recognization_correct_number += 1
  501. else:
  502. self.hyperlpr_tableview.item(
  503. row, 4).setForeground(
  504. QBrush(
  505. QColor(
  506. 255, 0, 0)))
  507. self.hyperlpr_tableview.item(
  508. row, 5).setText(
  509. "%.3f" %
  510. (float(
  511. res_set[0][5])))
  512. if __name__ == '__main__':
  513. app = QApplication(sys.argv)
  514. hyper_lpr_widow = HyperLprWindow()
  515. hyper_lpr_widow.showMaximized()
  516. sys.exit(app.exec_())