使用QFileDialog Python的openCV读取图像

问题描述 投票:-1回答:1

我正在尝试对上传的图像进行预处理。但无法使用opencv读取图像,因此所有预处理均不适用。PyQt5-mainWindow:

fname = QFileDialog.getOpenFileName(self, 'Open file', 'c:\\', "Image files (*.jpg *.gif *.png)")
imagePath = fname[0]

extractedText=imageToText.getImage(imagePath)

----图像的另一类--------

def getImage(string):
        img= cv2.imread(string)
        finalImage = pre_processing(img)
        extractedText = "anything"
        return extractedText 
    def pre_processing(img):
        resized = img
        if (img.shape[1] > 500) and (img.shape[0] > 500): #error (no shape)
           resized = cv2.resize(img,None, fx=0.8,fy=0.8, interpolation = cv2.INTER_CUBIC)

        gray = cv2.cvtColor(resized, cv2.COLOR_BGR2GRAY)  # error in cvtcolor
        th_val, th_img = cv2.threshold(gray, 0, 255, cv2.THRESH_BINARY + cv2.THRESH_OTSU)
        blur = cv2.GaussianBlur(th_img, (3, 3), 0)
        return blur

这是路径上的问题吗?还是文件类型与opencv不兼容?在我使用cv2.imread('test.jpg')之前但是现在使用“ QFileDialog.getOpenFileName”无法正常工作来自(imagePath)的问题

错误:

OpenCV(3.4.2)
c:\miniconda3\conda-bld\opencv-suite_1534379934306\work\modules\imgproc\src\color.hpp:253:
error: (-215:Assertion failed)
VScn::contains(scn) && VDcn::contains(dcn) && VDepth::contains(depth)
in function 'cv::CvtHelper<struct cv::Set<3,4,-1>,struct cv::Set<1,-1,-1>,struct cv::Set<0,2,5>,2>::CvtHelper'
python opencv pyqt anaconda
1个回答
0
投票

以下代码从QFileDialog提供的路径打开图像。还不清楚您的imageToText类在做什么,因此问题可能出在这里。使用cv2.imread()代替,并使用返回的矩阵。

class(QMainWindow):
__init__(self):
    self.openFile = QAction(QIcon('open.png'), 'Open', self)
    self.openFile.setShortcut('Ctrl+l')
    self.openFile.setStatusTip('Open new File')
    self.openFile.triggered.connect(self.showDialog)
    menubar = self.menuBar()
    fileMenu = menubar.addMenu('&File')
    fileMenu.addAction(self.openFile)
    self.setObjectName("MainWindow")
    self.resize(800, 600)

def showDialog(self):
    fname = QFileDialog.getOpenFileName(self, 'open file', '/home')
    print(fname[0])
    import cv2
    a = cv2.imread(fname[0])
    cv2.imshow("a", a)
    cv2.waitKey(0)
© www.soinside.com 2019 - 2024. All rights reserved.