目录
1. Opencv图像 转 QImage
def cvimage_to_qimage(cvimage):
image = cv2.cvtColor(cvimage, cv2.COLOR_BGR2RGB)
qimage = QImage(image.data, image.shape[1], image.shape[0], image.strides[0], QImage.Format_RGB888)
return qimage
2. Opencv图像 转 QPixmap
只需要加上一行 QPixmap.fromImage(qimage)
即可
def cvimage_to_qpixmap(cvimage):
image = cv2.cvtColor(cvimage, cv2.COLOR_BGR2RGB)
qimage = QImage(image.data, image.shape[1], image.shape[0], image.strides[0], QImage.Format_RGB888)
return QPixmap.fromImage(qimage)
3. QImage 转 Opencv图像
def qimage_to_cvimage(self, qimage):
buf = qimage.constBits() # 获取图像数据的指针
width, height = qimage.width(), qimage.height() # 获取图像的宽度和高度
buf.setsize(qimage.byteCount()) # 设置缓冲区的大小为图像的字节数
return np.array(buf).reshape(height, width, 4).copy() # 将缓冲区转换为 NumPy 数组,并重新形状为图像尺寸
4. QPixmap 转 opencv图像
只需要加上一行 qimage = qpixmap.toImage() # 转为Qimage
即可
def qpixmap_to_cvimage(self, qpixmap):
qimage = qpixmap.toImage() # 转为Qimage
buf = qimage.constBits() # 获取图像数据的指针
width, height = qimage.width(), qimage.height() # 获取图像的宽度和高度
buf.setsize(qimage.byteCount()) # 设置缓冲区的大小为图像的字节数
return np.array(buf).reshape(height, width, 4).copy() # 将缓冲区转换为 NumPy 数组,并重新形状为图像尺寸
5. QPixmap 转 QImage
qimage = qpixmap.toImage() # 转为Qimage
6. QImage 转 QPixmap
qpixmap = QPixmap.fromImage(qimage) # 转为QPixmap