儘管不是一個熟練的GUI程序員,我想出瞭如何使用pyqtgraph模塊的ImageView函數來顯示一個圖像,我可以平移/縮放並點擊以獲得精確的像素座標。完整的代碼如下。唯一的問題是ImageView顯然只能顯示單通道(單色)圖像。 (我忽略了直方圖,標準和ROI特徵,我並不需要),但是可以選擇顯示一個真彩色圖像(例如,原始的JPEG照片)?如何顯示類似於pyqtgraph ImageView的可點擊RGB圖像?
import numpy as np
from pyqtgraph.Qt import QtCore, QtGui
import pyqtgraph as pg
import matplotlib.image as mpimg
# Load image from disk and reorient it for viewing
fname = 'R0000187.JPG' # This can be any photo image file
photo=np.array(mpimg.imread(fname))
photo = photo.transpose()
# select for red color and extract as monochrome image
img = photo[0,:,:] # WHAT IF I WANT TO DISPLAY THE ORIGINAL RGB IMAGE?
# Create app
app = QtGui.QApplication([])
## Create window with ImageView widget
win = QtGui.QMainWindow()
win.resize(1200,800)
imv = pg.ImageView()
win.setCentralWidget(imv)
win.show()
win.setWindowTitle(fname)
## Display the data
imv.setImage(img)
def click(event):
event.accept()
pos = event.pos()
print (int(pos.x()),int(pos.y()))
imv.getImageItem().mouseClickEvent = click
## Start Qt event loop unless running in interactive mode.
if __name__ == '__main__':
import sys
if (sys.flags.interactive != 1) or not hasattr(QtCore, 'PYQT_VERSION'):
QtGui.QApplication.instance().exec_()
如果您刪除了關於平移的部分,會更好。只有關於顏色的部分對問題至關重要。 – Veedrac 2014-09-21 05:49:57
我恭敬地不同意。我知道如何顯示靜態彩色圖像,但不知道如何使用內置的便捷平移,縮放和使用鼠標來獲取像素座標。這個問題的確切點在於是否存在一個框架(或編程技巧),使我能夠輕鬆完成所有這些工作,而不需要至少兩倍的代碼行和八倍的GUI編程知識。如果這種看似明顯的組合根本不存在,那將回答我的問題。 – 2014-09-21 13:05:33
也許我誤解了,但肯定足以說明你正在使用Qt。我只是說,縮短代碼和前面的文本可能會更好。雖然我不知道Qt,所以我不能說真的。 – Veedrac 2014-09-21 14:15:12