pyqt5 使用QImage 和gdal显示RGB图像

gdal 读取图像

image = gdal.Open(path)
width = image.RasterXSize #获取宽度
height = image.RasterYSize #获取高度
allLayer = image.ReadAsArray(0, 0, width, height) #指定范围获取图像数组

用这种方式获取的图像数组allLadsyer的shape是[RasterCount,RasterYSize,RasterXSize]形式的,即[波段数,图像高,图像宽]

这种形式与QImage中常用的[图像高,图像宽,波段数]shape的形式是不同的,如果不做转换,在显示时只能展示出一个波段的灰度图像

所以,在显示之前,要使用numpy对数组做一个转换处理

showLayer = np.rollaxis(allLayer, 0, 3)

处理之后的shape时符合显示要求的。

接下来就可以使用QImage显示图片

class ImageLabel(QGraphicsView):
        # 显示整幅图像
    def showImage(self, image_array):
        height, width, bytesPerComponent = image_array.shape
        size = QSize(self.size().width() - 10, self.size().height() - 10)
        bytesPerLine = bytesPerComponent * width
        self.QImg = QImage(image_array.tobytes(), width, height, bytesPerLine, QImage.Format_RGB888)
        self.pixmap = QPixmap.fromImage(self.QImg).scaled(size, Qt.KeepAspectRatio, Qt.SmoothTransformation)
        self.item = QGraphicsPixmapItem(self.pixmap)
        self.scene = QGraphicsScene()  # 创建场景
        self.scene.addItem(self.item)
        self.setScene(self.scene)

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ZH_CS

随缘吧

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值