Pyqt get pixel position and value when mouse click on the image

前端 未结 3 1847
南方客
南方客 2021-02-06 09:41

I would like to know how i can select a pixel with a mouse click in an image (QImge) and get pixel position and value.

Thanks

3条回答
  •  傲寒
    傲寒 (楼主)
    2021-02-06 10:37

    This question is old but for everybody getting here, like me, this is my solution based on Jareds answer:

    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
    

    Make sure the size of the label matches the size of the image, otherwise the x and y mouse coords need to be transformed to image coords. And I guess it's also possible to use the .pixel() method directly on a pixmap as well, but the QImage object seems to perform better in my case.

提交回复
热议问题