Pyqt 获取鼠标点击图像时的像素位置和数值

9 投票
3 回答
24729 浏览
提问于 2025-04-16 02:55

我想知道怎么通过鼠标点击在一张图片(QImage)上选择一个像素,并获取这个像素的位置和颜色值。

谢谢

3 个回答

2

首先,你需要绘制图像。你可以通过创建一个 QLabel 组件来实现,然后调用 setPixmap 方法。记得在这之前要把你的 QImage 转换成 QPixmap,可以使用 QPixmap.fromImage(img) 来完成这个转换。

如果你想获取鼠标点击的事件,可以通过继承 QImage 类,并重写 mousePressEvent 方法来实现。然后,你可以使用 QImage.pixel() 来查找点击位置的像素值。

4

这个问题虽然很老了,但对于像我一样来到这里的人,这里是我根据Jared的回答整理的解决方案:

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对象的表现似乎更好。

15

在编程中,有时候我们会遇到一些问题,比如代码运行不正常或者出现错误。这种时候,我们可以去一些技术论坛,比如StackOverflow,寻求帮助。在这些论坛上,很多人会分享他们的经验和解决方案,帮助其他人解决类似的问题。

当你在这些论坛上提问时,记得把你的问题描述得清楚一些,最好附上相关的代码和错误信息。这样,其他人才能更好地理解你的问题,并给出有效的建议。

总之,技术论坛是一个很好的资源,可以帮助你解决编程中的难题,记得多去看看哦!

self.image = QLabel()
self.image.setPixmap(QPixmap("C:\\myImg.jpg"))
self.image.setObjectName("image")
self.image.mousePressEvent = self.getPos

def getPos(self , event):
    x = event.pos().x()
    y = event.pos().y() 

撰写回答