繁体   English   中英

如何以高质量将QImage缩放到小尺寸

[英]How to scale QImage to a small size with good quality

我有八个不同的视频。 我正在尝试将这些视频拆分为 window。我的视频质量是 720p。 但我需要适应小框架。 当我使用p = convert_to_Qt_format.scaled(256, 450, Qt.KeepAspectRatio)将视频调整为 256x450 时,我无法获得高质量的视频。 我怎样才能调整好质量。 你对我有什么建议?

@pyqtSlot(list)
    def update_image(self, cv_img = []):
        """Updates the image_label with a new opencv image"""
        qt_img = []
        for i in range(0,8):
            # qt_img.append(0)
            qt_img.append(self.convert_cv_qt(cv_img[i]))
        self.ui.video1.setPixmap(qt_img[0])
        self.ui.video2.setPixmap(qt_img[1])
        self.ui.video3.setPixmap(qt_img[2])
        self.ui.video4.setPixmap(qt_img[3])
        self.ui.video5.setPixmap(qt_img[4])
        self.ui.video6.setPixmap(qt_img[5])
        self.ui.video7.setPixmap(qt_img[6])
        self.ui.video8.setPixmap(qt_img[7])

    def convert_cv_qt(self, cv_img):
        """Convert from an opencv image to QPixmap"""
        rgb_image = cv2.cvtColor(cv_img, cv2.COLOR_BGR2RGB)
        h, w, ch = rgb_image.shape
        bytes_per_line = ch * w
        convert_to_Qt_format = QtGui.QImage(rgb_image.data, w, h, bytes_per_line, QtGui.QImage.Format_RGB888)
        p = convert_to_Qt_format.scaled(256, 450, Qt.KeepAspectRatio)
        return QPixmap.fromImage(p)

请注意, QImage::scaled()有一个可选参数transformMode ,默认为Qt::FastTransformation 如果你传递Qt::SmoothTransformation结果应该更好,因为使用了双线性过滤。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM