Отображение геотифовых изображений с помощью qt

В настоящее время я пытаюсь создать графический интерфейс для сценария, проецирующего 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));

Я искал в интернете, но, похоже, решения пока нет.

Я уточнил, что я работаю над Ubuntu с библиотеками QT, OpenCV и Magick ++.

Может кто-нибудь, пожалуйста, помогите мне?
Большое спасибо 🙂

0

Решение

Qt просто не поддерживает изображения в используемом вами формате. Вы должны использовать свой собственный QImageIOHandler Обертка для libgeotiff.

0

Другие решения

Куба Обер прав, но для тех, кто хочет показывать геофизические изображения без определения там своих QImageIOHandler а кто использует OpenCV, вы можете просто загрузить свое геотифовое изображение в виде матрицы 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 отображаемая версия этого.

1

По вопросам рекламы [email protected]