在 PyQt 中调整视频大小
Resize video in PyQt
我正在使用 PyQt 和 OpenCV 构建视频播放器。使用一个单独的线程,我用 OpenCV 读取了一个视频文件,然后将它发送到 DisplayFrame class,它使用 paint 事件来显示每一帧。
我的问题是如何使视频像 VLC Player 一样调整大小?如果播放器 window 过宽或过高并调整播放器大小 window 并保持视频比例不变,则在视频周围呈现黑色空白 space?
Class用于显示帧数:
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()
您必须将图像的大小调整为 window 的大小。为此,您必须更改:
painter.drawImage(0, 0, self.image)
至:
painter.drawImage(self.rect(), self.image)
我正在使用 PyQt 和 OpenCV 构建视频播放器。使用一个单独的线程,我用 OpenCV 读取了一个视频文件,然后将它发送到 DisplayFrame class,它使用 paint 事件来显示每一帧。
我的问题是如何使视频像 VLC Player 一样调整大小?如果播放器 window 过宽或过高并调整播放器大小 window 并保持视频比例不变,则在视频周围呈现黑色空白 space?
Class用于显示帧数:
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()
您必须将图像的大小调整为 window 的大小。为此,您必须更改:
painter.drawImage(0, 0, self.image)
至:
painter.drawImage(self.rect(), self.image)