用qt显示地理图像

时间:2015-07-22 14:46:48

标签: c++ qt geotiff

我目前正在尝试为在图像上投影DSM(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。

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

2 个答案:

答案 0 :(得分:1)

Kuba Ober是对的,但是对于那些想要显示geotiff图像而没有定义自己的QImageIOHandler并且使用OpenCV的人,你可以将你的geotiff图像加载为OpenCV矩阵并将其转换为QImage。 / p>

以下是我的转换:

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

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

答案 1 :(得分:0)

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