【问题标题】:Resize video in PyQt在 PyQt 中调整视频大小
【发布时间】:2017-05-20 20:26:08
【问题描述】:

我正在使用 PyQt 和 OpenCV 构建视频播放器。使用单独的线程,我使用 OpenCV 读取视频文件,然后将其发送到使用绘制事件显示每一帧的 DisplayFrame 类。

我的问题是如何让视频像 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()

【问题讨论】:

    标签: python opencv pyqt video-player


    【解决方案1】:

    您必须将图像的大小调整为窗口大小。为此,您必须更改:

    painter.drawImage(0, 0, self.image)
    

    到:

    painter.drawImage(self.rect(), self.image)
    

    【讨论】:

    • 谢谢,它有效。如果我想防止图像被拉伸(以保持纵横比),我还需要更改哪些内容?
    • 您可以使用resize() 方法或类似的方法。如果我的回答有帮助,请标记为正确
    • 您希望它仅按图片大小的比例进行拉伸吗?
    • 是的,如果用户将窗口拉伸到与图像不成比例的大小,则不会拉伸图像。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多