使用qt显示geotiff图像
Display geotiff images with 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));
我在网上搜索了一下,但似乎还没有解决办法。
我确切地说,我正在用QT、OpenCV和magick++库在Ubuntu上工作。
有人能帮帮我吗?非常感谢:)
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
是它的可显示版本。
Qt根本不支持您使用的格式的图像。您需要为libgeotiff使用自己的QImageIOHandler
包装器。
相关文章:
- C++,OpenCV,尝试显示图像时"OpenCV(4.3.0) Error: Assertion failed (size.width>0 && size.height>0)"此错误
- 如何使用OpenCV将RBG图像转换为HSV,并将H、S和V值保存为C++中的3个独立图像
- OpenCV EqualizeHist()从彩色图像创建黑白图像
- 将"打开的CV图像"中的"颜色"转换为整数格式
- 平均图像时图像损坏
- 在C++中使用GDAL可以将图像的像素坐标转换为lat,long吗
- 如何将图像传输到c++(dll)中的缓冲区,然后在c#的缓冲区中读/写
- Vulkan验证层不断在VkQueuePresentKHR()上抛出图像布局错误
- 使用FFMPEG将RGB图像序列保存到.mp4时出现问题
- 将RGB图像保存为PPM格式
- 将图像添加到资源文件夹UWP C++
- 彩色图像的卤化物处理平均值
- C++射线示踪剂ppm表示没有足够的数据来显示图像
- 重新定位图像时如何前进到下一个内存块
- 如何使用按钮更新GTK3图像以使用C++从相机捕获图片
- 为什么 BMP 图像上的 imwrite 会卡住/不返回?
- Gstreamer:每 5 秒使用多文件墨水保存图像/jpeg
- 如何使用CImg打开图像?
- 如何使用 OpenCV 解码在两个 UWP 应用之间发送的图像字节?
- 使用qt显示geotiff图像