Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/330.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Pyqt在鼠标单击图像时获取像素位置和值_Python_Image_Pyqt_Selection_Pixel - Fatal编程技术网

Python Pyqt在鼠标单击图像时获取像素位置和值

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答案的解决方案:

我想知道如何在图像中用鼠标点击选择像素(QImge),并获得像素位置和值


谢谢

首先你必须画出图像。您可以通过制作
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