Python Pyqt在鼠标单击图像时获取像素位置和值
我想知道如何在图像中用鼠标点击选择像素(QImge),并获得像素位置和值Python Pyqt在鼠标单击图像时获取像素位置和值,python,image,pyqt,selection,pixel,Python,Image,Pyqt,Selection,Pixel,我想知道如何在图像中用鼠标点击选择像素(QImge),并获得像素位置和值 谢谢首先你必须画出图像。您可以通过制作QLabel小部件并调用setPixmap来完成此操作。在执行此操作之前,您需要将QImage转换为QPixmap(您可以使用QPixmap.fromImage(img)) 您可以通过子类化QImage并拦截mousePressEvent来获得鼠标点击。使用QImage.pixel()查找像素值这个问题很老了,但对于像我一样来到这里的每个人来说,这是我基于Jareds答案的解决方案:
谢谢首先你必须画出图像。您可以通过制作
QLabel
小部件并调用setPixmap
来完成此操作。在执行此操作之前,您需要将QImage
转换为QPixmap
(您可以使用QPixmap.fromImage(img)
)
您可以通过子类化
QImage
并拦截mousePressEvent
来获得鼠标点击。使用QImage.pixel()
查找像素值这个问题很老了,但对于像我一样来到这里的每个人来说,这是我基于Jareds答案的解决方案:
self.img = QImage('fname.png')
pixmap = QPixmap(QPixmap.fromImage(self.img))
img_label = QLabel()
img_label.setPixmap(pixmap)
img_label.mousePressEvent = self.getPixel
def self.getPixel(self, event):
x = event.pos().x()
y = event.pos().y()
c = self.img.pixel(x,y) # color code (integer): 3235912
# depending on what kind of value you like (arbitary examples)
c_qobj = QColor(c) # color object
c_rgb = QColor(c).getRgb() # 8bit RGBA: (255, 23, 0, 255)
c_rgbf = QColor(c).getRgbf() # RGBA float: (1.0, 0.3123, 0.0, 1.0)
return x, y, c_rgb
确保标签的大小与图像的大小匹配,否则需要将x和y鼠标坐标转换为图像坐标。我想也可以直接在pixmap上使用
.pixel()
方法,但在我的例子中,QImage对象的性能似乎更好。如果图像是灰度格式,我如何获得强度?
self.img = QImage('fname.png')
pixmap = QPixmap(QPixmap.fromImage(self.img))
img_label = QLabel()
img_label.setPixmap(pixmap)
img_label.mousePressEvent = self.getPixel
def self.getPixel(self, event):
x = event.pos().x()
y = event.pos().y()
c = self.img.pixel(x,y) # color code (integer): 3235912
# depending on what kind of value you like (arbitary examples)
c_qobj = QColor(c) # color object
c_rgb = QColor(c).getRgb() # 8bit RGBA: (255, 23, 0, 255)
c_rgbf = QColor(c).getRgbf() # RGBA float: (1.0, 0.3123, 0.0, 1.0)
return x, y, c_rgb