当前位置: 首页 > news >正文

VS+Qt+C++ GDAL读取tif图像数据显示

程序示例精选
VS+Qt+C++ GDAL读取tif图像数据显示
如需安装运行环境或远程调试,见文章底部个人QQ名片,由专业技术人员远程协助!

前言

这篇博客针对《VS+Qt+C++ GDAL读取tif图像数据显示》编写代码,代码整洁,规则,易读。 学习与应用推荐首选。


运行结果


文章目录

一、所需工具软件
二、使用步骤
       1. 主要代码
       2. 运行结果
三、在线协助

一、所需工具软件

       1. VS2019, Qt
       2. C++

二、使用步骤

代码如下(示例):
#include "MainWindow.h"
#include<iostream>
#include <gdal_priv.h>
#include <cpl_conv.h>
#include <QApplication>
#include <QImage>
#include <QLabel>
#include <opencv.hpp>
using namespace std;
using namespace cv;
//gdal读取tiff图像波段,另存为jpg,通过opencv显示图像
void MainWindow::On_tiff_File()
{std::cout << "modelRun" << std::endl;GDALAllRegister();// 打开TIFF文件GDALDataset* dataset = (GDALDataset*)("dd.tiff", GA_ReadOnly);if (dataset == NULL) {std::cout << "打开文件失败!";return;}// 获取影像信息int width = dataset->GetRasterXSize();int height = dataset->GetRasterYSize();// 读取各波段数据并合成std::vector<cv::Mat> bands;for (int i = 1; i <= numBands; ++i) {GDALRasterBand* band = dataset->GetRasterBand(i);cv::Mat bandData(height, width, CV_8U);band->RasterIO(GF_Read, 0, 0, bandData.data, width, height, GDT_Byte, 0, 0);bands.push_back(bandData);}// 合成多波段数据(这里简单地将各波段叠加)cv::Mat compositeImage(height, width, CV_8U, cv::Scalar(0));for (const auto& band : bands) {compositeImage += band;}// 将图像保存为JPEG格式std::string imagePath = "output.jpg"; // 保存图像的路径cv::imwrite(imagePath, compositeImage);// 重新打开JPEG图像文件cv::Mat frame = cv::imread(imagePath, cv::IMREAD_COLOR);//cvtColor(frame, frame, COLOR_RGB2BGR); //// 设置窗口大小策略,允许窗口自由拉伸ui.label->setPixmap(QPixmap::fromImage(img));ui.label->setScaledContents(true);ui.label->update();// 释放资源GDALClose(dataset);
}
运行结果

三、在线协助:

如需安装运行环境或远程调试,见文章底部个人 QQ 名片,由专业技术人员远程协助!

1)远程安装运行环境,代码调试
2)Visual Studio, Qt, C++, Python编程语言入门指导
3)界面美化
4)软件制作

当前文章连接:https://blog.csdn.net/alicema1111/article/details/132666851
个人博客主页:https://blog.csdn.net/alicema1111?type=blog
博主所有文章点这里:https://blog.csdn.net/alicema1111?type=blog

http://www.lryc.cn/news/181730.html

相关文章:

  • CSS 选择器-认识并应用选择器
  • 【教程】Autojs使用OpenCV进行SIFT/BRISK等算法进行图像匹配
  • [庆国庆 迎国庆 发文]云计算的概念
  • 计算机网络-计算机网络体系结构-概述,模型
  • 对示例程序spinner_asyncio.py进行修改使其能运行
  • Linux命令(93)之head
  • 使用Visual Studio调试排查Windows系统程序audiodg.exe频繁弹出报错
  • WebSocket实战之六心跳重连机制
  • Webpack 基础入门以及接入 CSS、Typescript、Babel
  • postgresql-自增字段
  • SpringBoot中使用Servlet和Filter
  • Monkey命令
  • 力扣 -- 279. 完全平方数(完全背包问题)
  • 在将对象 => JSON格式时,无法序列化部分属性
  • 用python表格初级尝试
  • 【单片机】16-LCD1602和12864显示器
  • AUTOSAR从入门到精通-基于 CAN 总线的汽车发电机智能调节器(下)
  • Windows下Tensorflow docker python开发环境搭建
  • idea常用快捷键 idea搜索快捷键
  • Redis Cluster Gossip Protocol: MEET
  • TcpConnection的读写操作【深度剖析】
  • k8s面试题
  • OpenCV 4.x 版本的新特性都有哪些?
  • Redisson—分布式集合
  • 93、Redis 之 使用连接池管理Redis6.0以上的连接 及 消息的订阅与发布
  • doris动态分区开启历史分区
  • Linux用户与权限(认知root用户、修改权限控制 - chmod、修改权限控制 - chown)
  • 处理conda安装工具的动态库问题——解决记录 libssl.1.0.0 系统中所有openssl位置全览 whereis openssl
  • 如何在Go中格式化字符串
  • C程序设计内容与例题讲解 -- 第四章--选择结构程序设计第二部分(第五版)谭浩强