在 PyQt5 中使用 QImage 加载非常高分辨率的图像是否有任何限制?

问题描述 投票:0回答:0

我正在尝试使用 QImage 在 PyQt5 中加载分辨率为 30592 x 18432 的 .jpg 图像。

image = QImage(image_path)

# (same behavior with QPixmap as well)

但是当我检查它的 isNull() 方法时,QImage 返回一个 NULL 图像。所以尝试对图像进行除垢,发现我能够加载宽度小于 30000 的图像。因此 29500 x 17774 有效。我有 16GB RAM,所以我不怀疑有任何内存限制(在 29500 x 17774 下,加载时内存使用量约为 3.5GB,加载完成后显示图像时内存使用量降至 1.5GB)。

所以我认为这个问题可能是由于 QImage 的最大尺寸限制。所以我在网上搜索,我能找到的唯一相关论坛是this,据此QImage支持高达32767x32767像素。所以我的原始图像应该已经加载但没有。

Qt(C++) 和 PyQt 支持的最大分辨率是否不同?

是否有任何其他方法可以加载这种尺寸的图像。到目前为止我已经尝试过:

  1. 使用 cv.imread() 加载图像,它确实加载了 30592x18432 图像,但在将其转换为 QImage 时,它返回 null。

  2. 如前所述,除垢是我最后的选择,因为我在放大时丢失了一些细节。

  3. 我正在尝试将 Mat/Numpy.array 图像 (cv.imread()) 转换为 1000x1000 瓦片中的 QImage。它有效但还不完美。仍在努力。

版本详情:

安装:Anaconda 22.9.0(64 位)

安装目录/环境:Base/Root

Python:3.9.13(64 位)

PyQt:5.9.2

python qt pyqt pyqt5
© www.soinside.com 2019 - 2024. All rights reserved.