Reputation: 51
here is the scenario. First I want to upload image to GUI. Later by pressing another button I want to process this uploaded image. Now, I am able to show image in GUI. But I am clueless on how to get the name of this image, so I process this image by pressing another button. Now here is my code:
from PyQt4 import QtGui, QtCore
from PyQt4.QtGui import *
import sys
import cv2
from sklearn.externals import joblib
from sklearn.svm import LinearSVC
from skimage.feature import hog
import numpy as np
import os.path
class MainWindow(QtGui.QMainWindow):
def __init__(self):
super(MainWindow, self).__init__()
self.setGeometry(100, 100, 1000,600)
self.setWindowTitle("HandWritten Image Recognition")
extractAction = QtGui.QAction("&Quit", self)
extractAction.setShortcut("Ctrl+Q")
extractAction.setStatusTip("Leave the App")
extractAction.triggered.connect(self.close_application)
openFile = QtGui.QAction("&Open File", self)
openFile.setShortcut("Ctrl+O")
openFile.setStatusTip("Open File")
openFile.triggered.connect(self.file_open)
processImage = QtGui.QAction("&Process Image", self)
processImage.setShortcut("Ctrl+A")
processImage.setStatusTip("Process Image")
processImage.triggered.connect(self.process_image)
mainMenu = self.menuBar()
fileMenu = mainMenu.addMenu('&File')
fileMenu.addAction(openFile)
fileMenu.addAction(processImage)
fileMenu.addAction(extractAction)
def file_open(self):
# This function is called when the user clicks File->Open.
filename = QtGui.QFileDialog.getOpenFileName()
print(filename)
label = QtGui.QLabel(self)
label.setGeometry(QtCore.QRect(0, 20, 1000, 580))
label.setSizePolicy(QtGui.QSizePolicy.Preferred,QtGui.QSizePolicy.Preferred)
label.setScaledContents(True)
pixmap = QtGui.QPixmap(filename)
label.setPixmap(pixmap)
label.show()
def process_image(self):
###Get Uploaded Image's Name
def close_application(self):
print("Why so hurry!!!")
sys.exit()
def main():
app = QtGui.QApplication(sys.argv)
win = MainWindow()
win.show()
app.exec_()
if __name__ == '__main__':
sys.exit(main())
Now, in process_image function, I want to use uploaded image, so I can process it further. So, for that I want to know the file path of the uploaded image. Kindly guide me here.
Upvotes: 0
Views: 199
Reputation: 1019
It's simple. Kindly asign filename
to self
object's variable image
. Kindly add following code to your function process_image
:
os.path.basename(str(self.image))
Kindly find the updated code here:
from PyQt4 import QtGui, QtCore
from PyQt4.QtGui import *
import sys
import cv2
from sklearn.externals import joblib
from sklearn.svm import LinearSVC
from skimage.feature import hog
import numpy as np
import os.path
class MainWindow(QtGui.QMainWindow):
def __init__(self):
super(MainWindow, self).__init__()
self.setGeometry(100, 100, 1000,600)
self.setWindowTitle("HandWritten Image Recognition")
extractAction = QtGui.QAction("&Quit", self)
extractAction.setShortcut("Ctrl+Q")
extractAction.setStatusTip("Leave the App")
extractAction.triggered.connect(self.close_application)
openFile = QtGui.QAction("&Open File", self)
openFile.setShortcut("Ctrl+O")
openFile.setStatusTip("Open File")
openFile.triggered.connect(self.file_open)
processImage = QtGui.QAction("&Process Image", self)
processImage.setShortcut("Ctrl+A")
processImage.setStatusTip("Process Image")
processImage.triggered.connect(self.process_image)
mainMenu = self.menuBar()
fileMenu = mainMenu.addMenu('&File')
fileMenu.addAction(openFile)
fileMenu.addAction(processImage)
fileMenu.addAction(extractAction)
def file_open(self):
# This function is called when the user clicks File->Open.
filename = QtGui.QFileDialog.getOpenFileName()
print(filename)
self.image = filename #Assign filename to object's variable 'image'
label = QtGui.QLabel(self)
label.setGeometry(QtCore.QRect(0, 20, 1000, 580))
label.setSizePolicy(QtGui.QSizePolicy.Preferred,QtGui.QSizePolicy.Preferred)
label.setScaledContents(True)
pixmap = QtGui.QPixmap(filename)
label.setPixmap(pixmap)
label.show()
def process_image(self):
print os.path.basename(str(self.image)) #Get only file name with it's extension
def close_application(self):
print("Why so hurry!!!")
sys.exit()
def main():
app = QtGui.QApplication(sys.argv)
win = MainWindow()
win.show()
app.exec_()
if __name__ == '__main__':
sys.exit(main())
Upvotes: 1