능숙한 GUI 프로그래머가 아니지만 pyqtgraph 모듈의 ImageView 함수를 사용하여 팬/줌을 클릭하고 정확한 픽셀 좌표를 얻기 위해 이미지를 표시하는 방법을 알아 냈습니다. 전체 코드는 다음과 같습니다. 유일한 문제는 ImageView가 단일 채널 (단색) 이미지 만 표시 할 수 있다는 것입니다.pyqtgraph ImageView와 유사한 클릭 가능한 RGB 이미지를 표시하는 방법?
내 질문 : 정말 필요하지 않은 히스토그램, 표준 및 ROI 기능을 제외하고이 프로그램과 정확히 동일한 작업을 수행하지만 실제 색상 이미지를 표시하는 옵션 (예 : 원본 JPEG 사진)?
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
나는 정중하게 의견이 맞지 않는다. 정적 컬러 이미지를 표시하는 방법을 알고 있지만 패닝, 확대/축소 및 픽셀 좌표를 얻기위한 마우스 사용이 기본 제공되는 패키지에는 포함되어 있지 않습니다. 이 질문의 핵심은 적어도 두 줄의 코드와 8 배의 GUI 프로그래밍 지식 없이도이 모든 것을 쉽게 할 수있는 프레임 워크 (또는 프로그래밍 트릭)가 있는지 여부입니다. 그러한 겉으로보기에 명백한 결합이 단순히 존재하지 않는다면, 그것은 나의 질문에 답할 것입니다. –
아마도 내가 잘못 이해 했겠지만 확실히 Qt를 사용하고 있다고 말하는 것으로 충분합니다. 나는 단지 코드와 앞의 텍스트를 약간 줄이는 것이 더 낫다는 것을 말하고있다. 나는 개인적으로 Qt를 알지 못하지만 그렇게 말할 수는 없습니다. – Veedrac