From 0a830b2dd74d7f5e641aad833bc59cf6d4f06860 Mon Sep 17 00:00:00 2001 From: Peisong Xiao Date: Wed, 6 Mar 2024 21:44:13 -0500 Subject: [PATCH] A simple UI for displaying a photo --- .gitignore | 3 +- gui.py | 50 +++++++++++++++++++++ selector.ui | 124 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 176 insertions(+), 1 deletion(-) create mode 100644 gui.py create mode 100644 selector.ui diff --git a/.gitignore b/.gitignore index 1dbd351..89558fa 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,2 @@ -downloaded_files/ \ No newline at end of file +downloaded_files/ +testing/ diff --git a/gui.py b/gui.py new file mode 100644 index 0000000..dd47a1c --- /dev/null +++ b/gui.py @@ -0,0 +1,50 @@ +# This module handles the GUI of coin +import pytesseract +import cv2, os, sys +from PIL import Image +import PyQt5 +from PyQt5.QtGui import * +from PyQt5.QtCore import * +from PyQt5.QtWidgets import * +from PyQt5 import uic +from PyQt5 import QtCore, QtGui, QtWidgets +import glob + +# [!!!] Change this if tesseract can't find any data +models_path = '/usr/share/tessdata/' + +# Automatically finds all available language models +models_list = glob.glob(models_path + "*.traineddata") +model_names = [] +for path in models_list: + base_name = os.path.basename(path) + base_name = os.path.splitext(base_name)[0] + model_names.append(base_name) + + +class coin_app(QtWidgets.QMainWindow): + def __init__(self): + QtWidgets.QMainWindow.__init__(self) + self.ui = uic.loadUi('selector.ui', self) + self.image = None + self.ui.openButton.clicked.connect(self.open) + + def open(self): + filename = QFileDialog.getOpenFileName(self, 'Select File') + print("Opening file: ", filename[0]) + self.image = cv2.imread(str(filename[0])) + + if self.image.size == 0: + print("Error: image is empty!") + + frame = cv2.cvtColor(self.image, cv2.COLOR_BGR2RGB) + image = QImage(frame, frame.shape[1], frame.shape[0], + frame.strides[0], QImage.Format_RGB888) + + self.ui.photo.setPixmap(QPixmap.fromImage(image)) + print("Updated photo") + +app = QtWidgets.QApplication(sys.argv) +mainWindow = coin_app() +mainWindow.show() +sys.exit(app.exec_()) diff --git a/selector.ui b/selector.ui new file mode 100644 index 0000000..37ef665 --- /dev/null +++ b/selector.ui @@ -0,0 +1,124 @@ + + + MainWindow + + + + 0 + 0 + 1280 + 720 + + + + + Droid Sans Mono + 12 + + + + coin + + + true + + + QTabWidget::Rounded + + + + + + 680 + 20 + 121 + 31 + + + + Open image + + + + + + 20 + 20 + 651 + 671 + + + + Qt::ScrollBarAlwaysOn + + + Qt::ScrollBarAlwaysOn + + + true + + + + + 0 + 0 + 635 + 655 + + + + + + + Photo + + + Qt::AlignCenter + + + + + + + + + + 970 + 20 + 171 + 31 + + + + Save to database + + + + + + 810 + 20 + 151 + 31 + + + + Get item names + + + + + + 685 + 61 + 581 + 631 + + + + + + + + +