我正在使用PyQt和OpenCV构建视频播放器。使用单独的线程,我使用OpenCV读取视频文件,然后将其发送到DisplayFrame类,该类使用paint事件显示每个帧。
我的问题是如何让视频像VLC播放器一样调整大小?如果播放器窗口宽或高并且调整播放器窗口大小并保持视频比例相同,则在视频周围渲染黑色空白区域?
用于显示框架的类:
class DisplayFrame(QWidget):
def __init__(self, parent=None):
super(DisplayFrame, self).__init__(parent)
self.image = QImage()
self.setAttribute(Qt.WA_OpaquePaintEvent)
def paintEvent(self, event):
painter = QPainter(self)
painter.drawImage(0, 0, self.image)
self.image = QImage()
@pyqtSlot(QImage)
def set_image(self, image):
self.image = image
self.update()
答案 0 :(得分:0)
您必须将图像大小调整为窗口大小。要做到这一点,你必须改变:
painter.drawImage(0, 0, self.image)
为:
painter.drawImage(self.rect(), self.image)