python:opencv或numpy格式图像转qt图像格式的方法

opencv图像转qt图像的方法

  • opencv
  • PIL
  • 注意

opencv图像不能直接在qt中显示,因此这里总结了两种方法,可以将opencv的图像格式转为qt的图像格式,示例代码如下。

opencv


def cvImgtoQtImg(self, cvimg):
    if len(np.shape(cvimg)) == 2:
        cvimg = cv2.cvtColor(cvimg, cv2.COLOR_GRAY2RGB)
    height, width, channel = cvimg.shape
    cvimg = np.float32(cvimg)
    # bytes_per_line = 3 * width
    # qtimg = cv2.cvtColor(cvimg, cv2.COLOR_BGR2BGRA)
    qtimg = QtGui.QImage(cvimg.data, width, height, QImage.Format_RGB888)
    return QPixmap.fromImage(qtimg)

PIL

from PIL import Image, ImageQt

def cvimg_to_qpixmap(self, cvimg):
    img = Image.fromarray(cvimg)
    img_Qpixmap = ImageQt.toqpixmap(img)
    return img_Qpixmap
# 实际中遇到的问题,cvimg的类型是np.float,像素值在[0, 1],结果显示不正常,解决办法是将像素值乘以255.
cvimg = (cvimg * 255).astype(np.uint8)

注意

opencv读取的图像是BGR,BGR转RGB: bgr = img[:, :, ::-1]

# BGR show
cv2.imshow('img', img)
cv2.waitKey(300)

# RGB show
cv2.imshow('img', img[:, :, ::-1])
cv2.waitKey(300)

你可能感兴趣的:(python,ubuntu,opencv,numpy,qt)