python - 使用来自 QFileDialog Python 的 openCV 读取图像
问题描述
我正在尝试对上传的图像应用预处理。但图像不是用opencv读取的,所有预处理都没有应用。
PyQt5 - 主窗口:
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)
推荐阅读
- python - 熊猫:Groupby总和值
- tensorflow - 从 anaconda 提示符启动 jupyter notebook 的问题
- android - 如何从 Firebase 数据库 Kotlin 中检索特定数据?
- pandas - 如何根据熊猫中另一列中的值替换NAN值
- c++ - 如何在 atom 文本编辑器中运行 graphics.h 头文件?
- tensorflow - 在深度学习中结合训练和推理的重要性
- android-studio - 如何解决我在 Eclipse IDE 中安装的 Android 的问题?
- ios - Target 覆盖 Xcode 12.5 和 Swift 5 中的“ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES”构建设置警告
- php - 资源所有者或授权服务器拒绝了该请求。laravel 护照
- shell - 如何将多个文件作为参数传递给shell脚本中的函数