qlabel 自适应mat图片大小显示
时间: 2023-08-20 16:07:29 浏览: 232
自适应图片大小
要让 QLabel 自适应 Mat 图片大小显示,可以通过以下步骤实现:
1. 将 Mat 图像转换为 QPixmap 类型,使用 QPixmap::fromImage() 函数将 Mat 转换为 QImage,再使用 QPixmap::fromImage() 函数将 QImage 转换为 QPixmap。
2. 根据 QLabel 的大小和 QPixmap 的大小计算缩放比例,使用 QPixmap::scaled() 函数进行缩放。
3. 将缩放后的 QPixmap 设置为 QLabel 的图像,使用 QLabel::setPixmap() 函数进行设置。
下面是一个示例代码:
```python
import cv2
from PyQt5.QtGui import QPixmap, QImage
from PyQt5.QtWidgets import QLabel, QWidget, QHBoxLayout
# 加载 Mat 图像
mat_img = cv2.imread('test.jpg')
# 将 Mat 转换为 QPixmap
qimg = QImage(mat_img.data, mat_img.shape[1], mat_img.shape[0], QImage.Format_RGB888)
qpixmap = QPixmap.fromImage(qimg)
# 创建 QLabel 和 QWidget
label = QLabel()
widget = QWidget()
# 将 QLabel 放置在 QWidget 中
layout = QHBoxLayout(widget)
layout.addWidget(label)
# 计算缩放比例并设置 QLabel 的图像
scale_ratio = min(label.width() / qpixmap.width(), label.height() / qpixmap.height())
scaled_pixmap = qpixmap.scaled(qpixmap.width() * scale_ratio, qpixmap.height() * scale_ratio)
label.setPixmap(scaled_pixmap)
# 显示 QWidget
widget.show()
```
在上面的代码中,我们首先将 Mat 图像转换为 QPixmap,并根据 QLabel 大小和 QPixmap 大小计算缩放比例。然后使用 QLabel::setPixmap() 函数将缩放后的 QPixmap 设置为 QLabel 的图像,并将 QLabel 放置在 QWidget 中进行显示。
阅读全文