LIBTIFF读取tiff文件时,打印buf出错

news2024/9/21 4:39:11

如图所示,按照官网提供的例程读取tiff文件,并打印读取的值时,提示:

 Subscript of pointer to incomplete type 'void'

代码如下:

    //---打开tiff文件的测试
    
    
    TIFF* tif = TIFFOpen("a.tif", "r");
    if(tif){
        uint32 imageLength;
        tsize_t scanline;
//        unsigned char* buf;
        tdata_t* buf;
        uint32 row;
        uint32 col;
        
        TIFFGetField(tif, TIFFTAG_IMAGELENGTH, &imageLength);
        scanline = TIFFScanlineSize(tif);
//        buf = (unsigned char *)_TIFFmalloc(scanline);
        buf = (tdata_t*)_TIFFmalloc(scanline);
        printf("Scanlinesize = %zu", scanline);// %zu用来打印tsize_t
        for(row=0;row <imageLength;row++){
            TIFFReadScanline(tif, buf, row);
            for(col=0;col<scanline;col++){
                printf("buf[%d][%d]=%d", row,col,buf[col]);
//                printf("%d", buf[col]);//报错:Subscript of pointer to incomplete type 'void'
                                        //解决方法,将buf的类型由tdata_t改成unsigned char*
            printf("\n");
            }
        }
        _TIFFfree(buf);
        TIFFClose(tif);
    }

报错情况如图所示:

 

报错原因:

可能是buf 类型在分配内存的时候应该是指针类型,如下:

        buf = (unsigned char *)_TIFFmalloc(scanline);
//        buf = (tdata_t*)_TIFFmalloc(scanline);

使用tdata_t* 和unsigned char *类型都可以编译成功,但是打印出的数据不同:

tdata_t* 时,打印的数据如下:

 

使用unsigned char * 时,打印的数据如下:

 貌似使用unsigned char * 时获取的数据应该是正确的。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/68262.html

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

相关文章

使用docker安装RocketMQ

1.创建namesrv服务拉取镜像docker pull rocketmqinc/rocketmq创建namesrv数据存储路径mkdir -p /docker/rocketmq/data/namesrv/logs /docker/rocketmq/data/namesrv/store构建namesrv容器docker run -d \ --restartalways \ --name rmqnamesrv \ -p 9876:9876 \ -v /docker…

如何用vue+免费的webdb 实现一个世界杯足球竞猜系统

一、前言 最近世界杯在如火如荼的进行。我们都知道&#xff0c;中国也派出了我们的一支强大的队伍&#xff1a;中国建筑队&#xff0c;全程参与了世界杯的所有比赛。 哈哈开个玩笑&#xff0c;不过说到世界杯&#xff0c;还真有不少朋友&#xff0c;不仅仅是看球&#xff0c;…

[附源码]Python计算机毕业设计Django疫情防控管理系统

项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等等。 环境需要 1.运行环境&#xff1a;最好是python3.7.7&#xff0c;…

手把手教你成为荣耀开发者:数据报表使用指引

荣耀开发者服务平台是荣耀面向开发者的统一生态入口&#xff0c;通过聚合周边内外部系统&#xff0c;分全球多站点部署&#xff0c;为全球开发者提供业务全生命周期的商业支撑服务&#xff0c;拥有应用分发、智慧服务、开放能力、HONOR Connect等众多业务等您来合作。 “数据报…

Partial differential equation

In mathematics, a partial differential equation (PDE) is an equation which imposes relations between the various partial derivatives of a multivariable function. The function is often thought of as an “unknown” to be solved for, similarly to how x is th…

【三维目标检测】SASSD(一)

SASSD是用于点云三维目标检测模型算法&#xff0c;发表在CVPR 2020《Structure Aware Single-stage 3D Object Detection from Point Cloud》&#xff0c;论文地址为“https://www4.comp.polyu.edu.hk/~cslzhang/paper/SA-SSD.pdf”。SASSD与基于Anchor的目标检测模型的结构基本…

Kafka(四)- Kafka 生产者

文章目录一、生产者消息发送流程1. 发送流程2. 生产者重要参数列表二、异步发送 API1. 普通异步发送2. 带回调函数的异步发送3. 同步发送三、生产者分区1. 分区好处2. 生产者发送消息的分区策略&#xff08;1&#xff09;默认的分区器 DefaultPartitioner&#xff08;2&#xf…

行业沙龙第四期丨企业供应链协同的数字化解痛之道

当前&#xff0c;数字经济正在蓬勃发展&#xff0c;我们正在迈向一个协同一体的全球化时代。所谓协同&#xff0c;协者&#xff0c;众和之同也&#xff0c;多方能够协作才能达到一个共同的目标。其中&#xff0c;数据是实现协同的基本要素&#xff0c;技术是实现协同重要途径&a…

网络安全 核心基础篇总结

目录 前言 网络安全三大要素 CIA含义 1. Confidentiality&#xff08;机密性&#xff09; 1.1 机密性主要三个解决方法 1.1.1 加密 1.1.2 权限管理 1.1.3 敏感信息暴露 2. Integrity&#xff08;完整性&#xff09; 3. Availabitity&#xff08;可用性&#xff09; 威胁…

基于51单片机水塔水箱液水位WIFI监控报警设计proteus仿真原理图PCB

功能&#xff1a; 0.本项目采用STC89C52作为单片机系统的控制MCU 1.WIFI实时上传当前水位状态 2.通过液位传感器检测液位&#xff0c;检测到最低液位和最高液位时&#xff0c;超过设定阈值将声光报警 3.通过状态指示灯显示当前液位情况&#xff0c;三种颜色&#xff0c;红色代表…

快来给你的宠物视频加个表情特效吧

摘要&#xff1a;我们将给猫贴一张卡通脸&#xff0c;给 Elon Musk 贴上小胡子&#xff0c;给小狗贴上驯鹿角&#xff01;本文分享自华为云社区《视频AI&#xff0c;给你的宠物加个表情特效&#xff01;》&#xff0c;作者&#xff1a;HWCloudAI。 GAN 监督学习是一种联合端到…

Android适配【入坑指南+解决痛点】

Android适配是一个大坑&#xff0c;你可能早有耳闻。适配问题到底有多坑&#xff1f;为什么坑&#xff1f;以及如何从坑里爬出来&#xff1f; 概述 Android屏幕尺寸各异&#xff0c;而我们不可能根据各种尺寸都设计一套原型图去匹配&#xff0c;我们需要利用适配这一个过程把…

冷热电气多能互补的微能源网鲁棒优化调度附Matlab代码

✅作者简介&#xff1a;热爱科研的Matlab仿真开发者&#xff0c;修心和技术同步精进&#xff0c;matlab项目合作可私信。 &#x1f34e;个人主页&#xff1a;Matlab科研工作室 &#x1f34a;个人信条&#xff1a;格物致知。 更多Matlab仿真内容点击&#x1f447; 智能优化算法 …

基于Session的认证与授权实践

Spring Security系列文章 认证与授权之Cookie、Session、Token、JWT基于Session的认证与授权实践 基于Session的认证方式 基于 session 的认证方式如下图&#xff1a; 基于 Session 的认证机制由 Servlet 规范定制&#xff0c;Servlet 容器已实现&#xff0c;用户通过 HttpSes…

Matplotlib入门[05]——注释与标签

Matplotlib入门[05]——注释与标签 参考&#xff1a; https://ailearning.apachecn.org/ Matplotlib官网 plt.legend参数 使用Jupyter进行练习 注释 使用文本框进行注释 import numpy.random import matplotlib.pyplot as pltfig plt.figure(1, figsize(5,5)) # plt.clf…

ag-Grid Enterprise v28.2.1 企业版注册版

世界上最好的 JavaScript 网格 ag-Grid Enterprise v28.2.1 功能丰富 ag-Grid Enterprise v28.2.1 的性能、功能集和质量在 JavaScript 数据网格中前所未见。AG Grid 中的许多功能都是 AG Grid 独有的&#xff0c;并且只是将 AG Grid 归为一类&#xff0c;而不会影响质量或性能…

(详解错误情况,及解决方法)Vue 数据更新了但页面没有更新的情况

点个关注&#xff0c;赞一下栓Q 背景 在vue项目中&#xff0c;有些我们会遇到修改完数据&#xff0c;但是视图却没有更新的情况。具体的场景不一样&#xff0c;解决问题的方法也不一样。在网上看了很多文章&#xff0c;在此总结汇总一下。针对&#xff0c;数据更新视图没有更…

你知道哪些常用快捷键?电脑快捷键大全,打工人必备!

所谓的电脑快捷键&#xff0c;就是利用电脑键盘上的一个或几个按键组合完成一个功能命令&#xff0c;从而提高电脑的操作速度&#xff0c;带给我们更便捷的操作方式。电脑常用的快捷键是什么&#xff1f;以下是一些常用电脑快捷键的使用和功能的简要介绍。希望电脑快捷键大全能…

演讲实录 | OpenMLDB 整合自动特征工程

本文整理自 OpenMLDB 社区开发者、伊利诺伊大学 徐鹏程 在 OpenMLDB Meetup No.7 中的分享——《OpenMLDB 整合自动特征工程》。 大家好&#xff0c;我是来自伊利诺伊大学的硕士在读学生&#xff0c;也是 OpenMLDB 开源社区的贡献者——徐鹏程。我参与开发的项目&#xff0c;也…

RabbitMQ——RabbitMQ的六种工作模式详解

RabbitMQ 是一个开源的消息代理和队列服务器&#xff0c;用来通过普通协议在完全不同的应用之间共享数据&#xff0c;RabbitMQ是使用Erlang(高并发语言)语言来编写的&#xff0c;并且RabbitMQ是基于AMQP协议的 AMQP协议 Advanced Message Queuing Protocol&#xff08;高级消…