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

news2024/11/20 7:12:07

程序示例精选
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.coloradmin.cn/o/1046365.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于SpringBoot的美容院管理系统设计与实现

目录 前言 一、技术栈 二、系统功能介绍 管理员功能实现 美容部位管理 销量信息统计 已支付订单 技师功能实现 统计美容用品库存 预约信息管理 前台功能实现 普通用户管理 会员管理 普通用户功能实现 美容用品 购物车 我的订单 会员功能实现 美容项目 预约信…

PyCharm中使用pyqt5的方法2-1

qt可以用来设计界面&#xff0c;而pyqt是将qt移植到Python上&#xff0c;通过python语言设计界面&#xff0c;目前最新的版本是qt5。 在PyCharm中使用pyqt5的步骤分为下载和配置两个部分。 1 在PyCharm中下载安装pyqt5相关模块 1.1 下载步骤 PyCharm中要下载的pyqt5相关模块…

kafka集群是如何选择leader,你知道吗?

前言 kafka集群是由多个broker节点组成&#xff0c;这里面包含了许多的知识点&#xff0c;以下的这些问题你都知道吗? 你知道topic的分区leader是怎么选举的吗&#xff1f;你知道zookeeper中存储了kafka的什么信息吗&#xff1f;起到什么做呢&#xff1f;你知道kafka消息文件…

【精彩回顾】 用sCrypt在Bitcoin上构建智能合约

2023年3月24日&#xff0c;sCrypt在英国Exeter大学举办了关于智能合约的大学讲学。sCrypt首席执行官刘晓晖做了题为“用sCrypt在Bitcoin上构建智能合约”的演讲&#xff0c;并与到场的老师、学生进行了深入交流、互动。这次课程着重讲解了 BSV 智能合约的基础概念&#xff0c;以…

一图读懂「五度易链」企业创新服务解决方案,打造卓越营商环境!

“五度易链”紧密围绕园区企业及产业发展需求&#xff0c;基于数据积累和应用&#xff0c;创新企业服务机制&#xff0c;提升企业服务效能&#xff0c;以数字化手段为企业发展纾困解难&#xff0c;赋能企业高质量发展。并帮助园区在运营方面打破数据壁垒&#xff0c;实现数据监…

调度算法+等待/周转时间计算

周转时间 作业完成时刻 - 到达时刻 等待时间 开始时刻 - 到达时刻 平均时间就是用总时间除以作业个数 先来先服务调度算法&#xff08;FCFS&#xff09; 非抢占 优先级调度算法 系统总是调度优先级最高的那个进程运行。 优先级可以分为静态优先级和动态优先级。静态优先…

113. 路径总和ii

力扣题目链接(opens new window) 给定一个二叉树和一个目标和&#xff0c;找到所有从根节点到叶子节点路径总和等于给定目标和的路径。 说明: 叶子节点是指没有子节点的节点。 示例: 给定如下二叉树&#xff0c;以及目标和 sum 22&#xff0c; 在路径总和题目的基础上&…

新媒体运营的未来:ChatGPT的智能助手

&#x1f482; 个人网站:【工具大全】【游戏大全】【神级源码资源网】&#x1f91f; 前端学习课程&#xff1a;&#x1f449;【28个案例趣学前端】【400个JS面试题】&#x1f485; 寻找学习交流、摸鱼划水的小伙伴&#xff0c;请点击【摸鱼学习交流群】 新媒体运营是数字时代的…

Java括号匹配

目录 一、题目描述 二、题解 一、题目描述 给定一个只包括 (&#xff0c;)&#xff0c;{&#xff0c;}&#xff0c;[&#xff0c;] 的字符串 s &#xff0c;判断字符串是否有效。 有效字符串需满足&#xff1a; 左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭…

LwIP笔记01:LwIP入门

1. LwIP简介 小型开源的TCP/IP协议栈交换机、路由器、光纤收发器、云台接入、无线网关、远程模块、工业控制器、网络摄像头 TCP/IP模型 &#xff08;1&#xff09;应用层&#xff1a;HTTP、MQTT、NTP、FTP、...... &#xff08;2&#xff09;传输层&#xff1a;TCP、UDP &…

【kubernetes】【基础资源使用】kubernetes中的Deployment使用

1 Why need Deployment? K8S中Pod是用户管理工作负载的基本单位&#xff0c;Pod通常通过Service进行暴露&#xff0c;因此&#xff0c;通常需要管理一组Pod&#xff0c;RC和RS主要就实现了一组Pod的管理工作&#xff0c;其中&#xff0c;RC和RS的区别在于&#xff0c;RS提供更…

如何使用pycharm连接Mysql数据库!!!

1、Mysql的安装&#xff1a; MySQL针对不同的用户提供了2中不同的版本&#xff1a; MySQL Community Server&#xff1a;社区版。由MySQL开源社区开发者和爱好者提供技术支持&#xff0c;对开发者开放源代码并提供免费下载。MySQL Enterprise Server&#xff1a;企业版。包括最…

新手程序员怎么接单?

程序员如何在自己年富力强的时候&#xff0c;最大化发挥自己的能力&#xff1f;将超能力转化为“钞能力”&#xff1f; 有人还在苦哈哈当老黄牛&#xff0c;一身使不完的牛劲&#xff0c;有人已经另辟蹊径&#xff0c;开创了自己的一片致富小天地。 接单找兼职&#xff0c;就…

MyBatis-Plus多数据源——如何在一个项目中使用多个MySQL数据库

前言 MyBatis-Plus (opens new window)&#xff08;简称 MP&#xff09;是一个 MyBatis (opens new window) 的增强工具&#xff0c;在 MyBatis 的基础上只做增强不做改变&#xff0c;为简化开发、提高效率而生。 本系列博客结合实际应用场景&#xff0c;阐述MyBatis-Plus实际…

小程序中如何同步公众号的文章

小程序为了更好的服务客户&#xff0c;有时候需要显示公众号的文章&#xff0c;用于更具体介绍产品、关注公众号和会员服务等。下面就将具体介绍&#xff1a;小程序中如何同步显示公众号的文章。 1. 关联公众号。在管理员后台->会员管理->通知处&#xff0c;关联服务号。…

【大数据开发技术】实验05-HDFS目录与文件的创建删除与查询操作

文章目录 HDFS目录与文件的创建删除与查询操作一、实验目标二、实验要求三、实验内容四、实验步骤附&#xff1a;系列文章 HDFS目录与文件的创建删除与查询操作 一、实验目标 熟练掌握hadoop操作指令及HDFS命令行接口掌握HDFS目录与文件的创建方法和文件写入到HDFS文件的方法…

软件测试工作步骤详情

软件测试步骤按照研发阶段一般分为5个部分&#xff1a;单元测试、集成测试、确认测试、系统测试、验收测试&#xff0c;下面将不同阶段需要的一些工作内容做一下梳理希望可以帮助到大家。 一、单元测试的内容&#xff1a;&#xff08;白盒为主&#xff0c;黑盒为辅&#xff09;…

业务安全情报23期 | 国庆前夕,又成功狙击一个倒卖机票的不法团伙

中秋国庆临近&#xff0c;热门航线机票预定量暴增。顶象防御云业务安全情报中心&#xff0c;监测到一个不法团伙进行虚假占座攻击&#xff0c;倒卖热门航班机票。在顶象协助下&#xff0c;该航空公司有效阻截多日的攻击&#xff0c;保障乘客购票利益。 热门航班遭到“倒票”攻击…

IPV6知识总结

目录 一、IPV6与IPV4相比改进之处1. “无限“的地址空间2. 层次化的地址结构3. 即插即用4. 简化了报头头部5.保证端到端网络的完整性6.安全性增强7.增强QoS特性 二、IPV6的规则IPV6地址主要分为了三类&#xff1a;单播地址&#xff0c;组播地址&#xff0c;任播地址单播地址组播…

基于低代码平台少量编码完成软件开发

一、低代码平台是什么 低代码平台简单来说就是只需要少量代码、甚至无需代码即可完成系统开发。 过去开发一套系统都需要软件工程师通过代码进行开发&#xff0c;所以任何一个系统的开发都需要大量的软件工程师资源&#xff0c;使得很多企业谈到系统开发就想到了高额的成本投入…