我正在尝试对上传的图像进行预处理。但无法使用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'
以下代码从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)