我正在尝试使用pyqt4导入图像我正在使用Qlabel显示它。 现在我想对这个图像做一些预处理,即GrayScale,去噪和分割。 单击工具栏中的操作按钮时显示更改。
以下是我使其工作的代码
from PyQt4 import QtCore, QtGui
from main_window import Ui_MainWindow
import cv2
class module_one(QtGui.QMainWindow, Ui_MainWindow):
"Module One i.e Pre-processing of the Project Handwriting analysis"
def __init__(self,parent=None):
"Initilization of Class module_one"
super(module_one,self).__init__(parent)
self.ui = Ui_MainWindow()
self.ui.setupUi(self)
self.createActions()
#Open Function
def open(self):
filename = QtGui.QFileDialog.getOpenFileName(self, "Open Image", QtCore.QDir.currentPath(), "Image Files (*.jpg *.jpeg)")
if filename:
image = QtGui.QPixmap(filename)
self.ui.label.setPixmap(image)
if image.isNull():
QtGui.QMessageVox.information(self,"Image Viewer","Cannot load %s."%filename)
return
#Function that will convert the image into grayscale
def gray_scale(self):
image = cv2.imread(self.ui.label) **#Gives Error here**
gray_scale = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
self.ui.label.setPixmap(gray_scale)
#Function that will connect all buttons to its function
def createActions(self):
self.ui.actionOpen.triggered.connect(self.open)
self.ui.actionExit.triggered.connect(QtGui.qApp.quit)
self.ui.actionGray_Scale_Conversion.triggered.connect(self.gray_scale)
出现以下错误
image = cv2.imread(self.ui.label)
TypeError: expected string or Unicode object, QLabel found
我知道我正在传递Qlabel及其期待的字符串或unicode对象。 但是,我不知道如何解决这个问题。 请有人告诉我该怎么做或如果你有更好的解决方案请提出。
P.S:我正在使用PyQt4 Designer和OpenCV版本2.4.8
答案 0 :(得分:0)
AFAIK,cv2.imread()
需要一个文件名,因此它会抛出 TypeError:期望的字符串或Unicode对象,找到QLabel 。
因此,在您的情况下,仅传递文件名比 QLabel (self.ui.label)
更有意义。