C++ 使用qt显示geotiff图像

C++ 使用qt显示geotiff图像,c++,qt,geotiff,C++,Qt,Geotiff,我目前正在尝试为在图像上投影DSMs(geotiff文件)的脚本制作一个图形界面。我认为在进行一些计算之前显示图像和DSM是个好主意。 不幸的是,即使显示图像没有问题,我在尝试显示DSM时也会出现以下错误: TIFFReadDirectory: Warning, foo: unknown field with tag 33550 (0x830e) encountered. TIFFReadDirectory: Warning, foo: unknown field with tag 33922

我目前正在尝试为在图像上投影DSMs(geotiff文件)的脚本制作一个图形界面。我认为在进行一些计算之前显示图像和DSM是个好主意。 不幸的是,即使显示图像没有问题,我在尝试显示DSM时也会出现以下错误:

TIFFReadDirectory: Warning, foo: unknown field with tag 33550 (0x830e) encountered.
TIFFReadDirectory: Warning, foo: unknown field with tag 33922 (0x8482) encountered.
TIFFReadDirectory: Warning, foo: unknown field with tag 42112 (0xa480) encountered.
TIFFReadDirectory: Warning, foo: unknown field with tag 42113 (0xa481) encountered.
foo: Sorry, can not handle images with 32-bit samples.
QPixmap::scaled: Pixmap is a null pixmap
以下是我目前正在尝试的:

QString s1 = QFileDialog::getOpenFileName(this, "Open a DSM", "/home", "Images (*.png *.xpm *.jpg *.tif *.tiff)");
ui->DSMPath->setText(s1);
QPixmap dispdsm(s1);
int w = ui->DSMDisplay->width();
int h = ui->DSMDisplay->height();
ui->DSMDisplay->setPixmap(dispdsm.scaled(w,h,Qt::KeepAspectRatio));
我在网上搜索过,但似乎还没有解决办法

我明确表示,我正在使用QT、OpenCV和Magick++库开发Ubuntu

有人能帮我吗?
非常感谢:)

Qt根本不支持您使用的格式的图像。您需要为libgeotiff使用自己的
QImageIOHandler
包装器。

Kuba Ober是正确的,但是对于那些希望显示geotiff图像而不定义自己的
QImageIOHandler
并且使用OpenCV的人,您可以将geotiff图像作为OpenCV矩阵加载并将其转换为QImage

以下是我的案例中的转换:

QImage image= QImage((uchar*) dsm.data, dsm.cols, dsm.rows, dsm.step, QImage::Format_ARGB32_Premultiplied);
QPixmap dispdsm = QPixmap::fromImage(image);

其中
dsm
在我的OpenCV矩阵中,以及
dispdsm
它的可显示版本。

你说“显示dsm”是什么意思?DSM可能存储为GeoTIFF,但它不是图像,这可能就是您收到错误消息的原因。因为它存储为.tif图像,并且我可以在每个图像查看器(黑白,1个通道)中看到它,所以我认为它可以作为普通图像显示。。。