PyQt5 opencv 播放视频,先读取第一帧图片显示出来,图片储存在frame中,但是显示出的图片颜色是错的?
self.video = cv2.VideoCapture(address)
self.fps = self.video.get(cv2.CAP_PROP_FPS)
ret, frame = self.video.read()
frame = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)
self.label_video.setScaledContents(True)
self.label_video.setGeometry(QtCore.QRect(80, 10, int(frame.shape[1] / 3), int(frame.shape[0] / 3)))
img = QImage(frame.data, frame.shape[1], frame.shape[0], frame.shape[1] * 3, QImage.Format_RGB888)
self.label_video.setPixmap(QPixmap.fromImage(img))
self.label_video.show()
显示的颜色有误,如下图
知道opencv和QImage之间图片要相互转换,但不明白哪里有误
正确显示颜色,如下图
OpenCV 使用 BGR 格式,matplotlib/PyQt 使用 RGB 格式。使用 matplotlib/PyQt 显示 openCV 图像,要将 BGR 格式转换为 RGB 格式.
图片格式转换:BGR(OpenCV) -> RGB(PyQt5)
imgRGB = cv2.cvtColor(imgBGR, cv2.COLOR_BGR2RGB)
【OpenCV 例程200篇】https://blog.csdn.net/youcans/article/details/121169102