Pyqt 获取鼠标点击图像时的像素位置和数值
我想知道怎么通过鼠标点击在一张图片(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()