1.状況1
ソースコード:
def selectImage(self):
'''
功能:选取需要增强的夜间图像,即从电脑中选取图像并显示在label上
'''
#参数三是默认路径(自己随便设),参数四是过滤哪些文件,比如下面就是只显示jpg或者png文件
#fname,a=QFileDialog.getOpenFileName(self,'打开文件','.','图像文件(*.jpg *.png)')
self.fname, ok = QFileDialog.getOpenFileName(self, '打开文件', 'D:/', '图像文件(*.jpg *.png)')
#print(fname) fname是图片完整路径
#在标签上放置图片
self.readLabel.setPixmap(QPixmap(self.fname))
return
バグの原因:
fnameは、コードビハインドの原因となった例外を取得しなかったはずです。
解決:
次のように、QFileDialog.getSaveFileName関数の後にコードを入力する前に、2番目のパラメーターが空でないことを確認してください。
def selectImage(self):
'''
功能:选取需要增强的夜间图像,即从电脑中选取图像并显示在label上
'''
#参数三是默认路径(自己随便设),参数四是过滤哪些文件,比如下面就是只显示jpg或者png文件
#fname,a=QFileDialog.getOpenFileName(self,'打开文件','.','图像文件(*.jpg *.png)')
self.fname, ok = QFileDialog.getOpenFileName(self, '打开文件', 'D:/', '图像文件(*.jpg *.png)')
#print(fname) fname是图片完整路径
#在标签上放置图片
print(ok)
if ok:
self.readLabel.setPixmap(QPixmap(self.fname))
return
完璧な解決策!
2.状況2
ソースコード:
def enhancement(self):
'''
功能:展示增强之后的图像
'''
img = cv.imread(self.fname)
self.ans = MSRCP(img, sigma_list=[15, 80, 200], low_clip=0.01, high_clip=0.99)
cv.imshow('MSRCP', self.ans)
cv.waitKey(0)
バグの原因:
self.fnameは、上記の関数で選択されたパスを受け入れます。パスが選択されていない場合、以下の関数に関連するボタンをクリックすると、これもself.fnameであり、何も受信しなかったため、異常終了が発生します。定義されていません!
解決:
したがって、この変数をウィンドウクラス、つまり2つのスロット関数の外側で定義し、スロット関数で判断します。次のように
def enhancement(self):
'''
功能:展示增强之后的图像
'''
if self.fname is not None:
img = cv.imread(self.fname)
self.ans = MSRCP(img, sigma_list=[15, 80, 200], low_clip=0.01, high_clip=0.99)
cv.imshow('MSRCP', self.ans)
cv.waitKey(0)