OpenCV读取TIFF图片并解析尺寸

需积分: 43 55 下载量 76 浏览量 更新于2024-09-09 1 收藏 3KB TXT 举报
本文档主要介绍了如何在OpenCV环境下成功读取和处理TIFF (Tagged Image File Format) 图片。TIFF是一种广泛用于存储高分辨率图像的文件格式,OpenCV库提供了对这种图像格式的支持,使得我们能够方便地在计算机视觉应用中进行图像处理。 首先,文档引入了必要的OpenCV头文件,如`opencv2/core/core.hpp`、`opencv2/highgui/highgui.hpp`,以及`cxcore.h`,这些都是处理图像数据的核心模块。`#include <iostream>`则引入了C++标准输入输出流,用于输出图像的相关信息。 在`main()`函数中,关键部分是通过`cvLoadImage()`函数来读取TIFF图片"lena4.tif"。这个函数接受一个字符串参数作为文件路径,并返回一个`IplImage`类型的指针,该指针包含了图片的所有信息,包括图像的宽度(`img->width`)和高度(`img->height`)。这段代码展示了如何获取图像的基本尺寸。 接下来,创建了三个`IplImage`对象:`redImage`、`greenImage`和`blueImage`,它们都是单通道的8位无符号整数类型,用于将原始图像分离成红绿蓝三种颜色通道。`cvSplit()`函数实现了这个功能,它接收一个源图像和四个目标图像指针,将原图分解为指定的通道。 然后,通过`cvNamedWindow()`、`cvShowImage()`和`cvWaitKey()`函数显示这些通道的图像,并暂停程序以观察结果。然而,由于`cout`无法直接输出`IplImage`对象,这里用到了`system("pause")`来实现暂停,以便查看每个通道的单独显示。注意,OpenCV中的窗口操作通常使用OpenCV的内建函数,而不是C++标准库函数。 总结来说,这篇代码演示了如何使用OpenCV库在C++环境中加载、解析TIFF图像,并将其分解为RGB颜色通道。这对于图像处理和分析任务,如颜色分割、色彩空间转换或图像特征提取等,都是基础且重要的步骤。理解并熟练掌握这些操作,对于在实际项目中处理各种图像数据至关重要。
2019-05-19 上传
1.该程序用QT开发,实现图片导入、显示、缩放、拖动及处理(冷暖色、灰度、亮度、饱和、模糊、锐化)。 经实测,我写的这个软件在导入10000*7096像素的超大图片的时候,缩放的速度比2345看图软件还快,2345缩放超大图会卡顿,但本软件不会^_^ 关于程序中缩放拖动部分的说面参见我的博客https://blog.csdn.net/weixin_43935474/article/details/89327314; 2.载入图片后,鼠标移动的时候可以显示鼠所在点的图像的坐标以及灰度; 3.缩放的时候,图片右上角可以显示当前图片的缩放比例; 4.用户可导入16位深的tiff灰度图文件(一般来说是由相机拍摄的灰度图数据),导入16位深的tiff的时候,用户需要先点击界面左上角的checkbox,然后再导入tiff图片,否则图片解析不出来。 注:Qt自带的QImage只能导入8位深的tiff灰度图,如果用qt的QImage导入16位深的灰度图,图像数据会被强制转换成argb格式的图像,数据就被更改了,所以我自己编写一个解析tiff文件的功能,我翻阅了很多博客,其中如下链接给我的帮助最大: https://blog.csdn.net/chenlu5201314/article/details/56276903 上述博客作为详细解析tiff文件结构的说明文档,写的非常详细,我也是根据上面的内容,自己编写了一个解析tiff文件的类(当然功能很少,只能解析符合特定条件的tiff文件) //************************************************************ //by Bruce Xu //注:解析tiff的类只解析特定的tiff文件! //1.解析的tiff文件中只存在一幅图,如果文件中存在多幅图,本类不支持解析! //2.图像数据为8位或16位深度的灰度图,如果是其他类型的图片,本类不支持解析! //3.图片没有被压缩过! //************************************************************