QT获取鼠标点击的视频/图片中的像素值

通过opencv可以获取图片中的某点的像素值。

代码如下:

img = cv2.imread('D:/2020.10apple_data/TXTapple/images/train/2_110.jpg')

def getposBgr(event, x, y, flags, param):
    if event==cv2.EVENT_LBUTTONDOWN:
        print("Bgr is", img[y, x])
 
cv2.imshow('image', img)
cv2.setMouseCallback("image", getposBgr)
cv2.waitKey(0)

但是与QT交互的时候,往往需要知道Qwidget的位置,好像和qt的event事件也不通用,所以获取一个widget中的视频/图片的某点的像素值时,需要通过event.pos()获取。另外要注意qpixmap需要转换成qimage才能获取像素,因为qpixmap只是用来显示图片/视频,并不能获取图像的参数。

代码如下:

  def mousePressEvent(self, event):
        pt = event.pos() # 获取当前widget的鼠标处的相对坐标,左上角为(0,0)
        if event.button() == Qt.LeftButton: # 如果鼠标左键点击
            print("点击位置坐标为", [pt.x(), pt.y()]) # 输出点击的坐标值
            qimage = self.qpixmap.toImage() #将qpixmap转换成qimage
            pix = qimage.pixel(pt.x(), pt.y()) #获取qimage在鼠标点击处的像素
            pix = QColor(pix)
            r = pix.red() # r
            g = pix.green() # g
            b = pix.blue() # b
            print('rgb',[r,g,b]) 

你可能感兴趣的:(python,qt,计算机视觉,opencv,深度学习)