OpenCV各模块函数使用实例(3 基本输入输出和色彩变换)

本篇博客详细介绍了OpenCV库中的基本图像输入输出函数imread和imwrite,以及色彩空间转换函数cvtColor。imread用于加载图像,支持多种文件格式,并提供了多种加载选项。imwrite则用于保存图像,支持调整压缩质量和格式。cvtColor用于在不同色彩空间间转换,包括灰度、RGB、BGR等。此外,还讨论了imshow函数用于显示图像,以及namedWindow用于创建和管理图像显示窗口。这些函数在OpenCV图像处理中起到关键作用。

本节主要翻译自OpenCV的帮助资料,并结合一些编程考量。

         D、基本输入输出函数

  • imread(fln),imwrite(fln,img);

函数原型:

Mat cv::imread(const String &filename, int flags = IMREAD_COLOR );

从文件中装入图像

函数imread从指定的文件中加载图像并返回一个Mat类型的图像对象。如果加载失败(由于文件错,不合适的权限,不支持或不可用的格式),这个函数返回空矩阵Mat::data==NULL )

       当前版本的openCV中这个函数支持下列格式的图像文件:

  • Windows 位图 - *.bmp, *.dib (总是支持的格式)
  • JPEG 文件 - *.jpeg, *.jpg, *.jpe(见注释节)
  • JPEG 2000 文件 - *.jp2 (见注释节)
  • 便携网络图文件 - *.png (见注释节)
  • WebP - *.webp (见注释节)
  • 便携图像格式 - *.pbm, *.pgm, *.ppm *.pxm, *.pnm (总是支持的格式)
  • PFM 文件 - *.pfm (见注释节)
  • Sun光栅文件 - *.sr, *.ras (总是支持的格式)
  • TIFF 文件 - *.tiff, *.tif (见注释节)
  • OpenEXR 图像文件 - *.exr (见注释节)
  • 辐射HDR - *.hdr, *.pic (总是支持的格式)
  • 由GDAL所支持的光栅和向量几何数据(见注释节)

注释

  • 这个函数通过内容确定图像类型,而不是通过文件的扩展名。
  • 在彩色图像中解码图像使用B G R 顺序存储图像的彩色通道。
  • 在使用IMREAD_GRAYSCALE图像标志时,也可能使用编解码器内部的灰度转换,此时的结果可能与cvtColor()的输出不一样。
  • 在微软的Windows OS MacOSX*下,编解码器默认使用附带的OpenCV图像(libjpeg, libpng, libtiff, and libjasper)库。所以OpenCV 总是能读取JPEGs, PNGs, TIFFs。在MacOSX下,还可以允许选择MacOSX原生的图像读取器。但是要当心,到现在为止,这些原生的图像加载器获得的图像具有不同的像素值,这是因为嵌入到MacOSX内的色彩管理操作是有差异的。
  • 对于LinuxBSD风格和其它类Unix的开源操作系统,OpenCV查找操作系统支持的图像编解码器。一定要记得安装相关的包(不要忘了这些开发文件,如,"libjpeg-dev",在Debian Ubuntu)以便获得编解码的支持或者在CMake中打开OPENCV_BUILD_3RDPARTY_LIBS标志开关。
  • CMake设置WITH_GDAL 标志为true,且使用IMREAD_LOAD_GDAL 来加载图像时,GDAL 驱动器将用于解码图像,支持: RasterVector格式。
  • 如果EXIF信息嵌入到图像文件中,就要考虑EXIF的朝向,因而,图像将依据EXIF进行旋转,除非传输了IMREAD_IGNORE_ORIENTATION  IMREAD_UNCHANGED 标志。
  • 使用IMREAD_UNCHANGED 标志来保持PFM图像的浮点值。
  • 默认情况下像素数必需小于2^30。这个限制可以使用OPENCV_IO_MAX_IMAGE_PIXELS进行设置。

参数

filename

装入的文件名。

flags

标志,可以取值于cv::ImreadModes

 

 

cv::ImreadModes { cv::IMREAD_UNCHANGED = -1,
                  
cv::IMREAD_GRAYSCALE = 0,
                  
cv::IMREAD_COLOR = 1,
                  
cv::IMREAD_ANYDEPTH = 2,
                  
cv::IMREAD_ANYCOLOR = 4,
                  
cv::IMREAD_LOAD_GDAL = 8,
                  
cv::IMREAD_REDUCED_GRAYSCALE_2 = 16,
                   
cv::IMREAD_REDUCED_COLOR_2 = 17,
                  
cv::IMREAD_REDUCED_GRAYSCALE_4 = 32,
                  
cv::IMREAD_REDUCED_COLOR_4 = 33,
                  
cv::IMREAD_REDUCED_GRAYSCALE_8 = 64,
                  
cv::IMREAD_REDUCED_COLOR_8 = 65,
                  
cv::IMREAD_IGNORE_ORIENTATION = 128
}

 

 

 

IMREAD_UNCHANGED 

Python: cv.IMREAD_UNCHANGED

如果设置,返回加载的源图,(alpha通道保留,否则裁剪掉)。不考虑EXIF朝向。

IMREAD_GRAYSCALE 

Python: cv.IMREAD_GRAYSCALE

如果设置,总是转换图像到单一通道的灰度图(编解码器内部转换)

IMREAD_COLOR 

Python: cv.IMREAD_COLOR

如果设置,总是转换图像到3通道BGR的彩色图。

IMREAD_ANYDEPTH 

Python: cv.IMREAD_ANYDEPTH

如果设置,在输入有对应深度时返回16-bit/32-bit图像,否则转换成8-bit图像。

IMREAD_ANYCOLOR 

Python: cv.IMREAD_ANYCOLOR

如果设置,图像以任何可能的彩色格式读取。

IMREAD_LOAD_GDAL 

Python: cv.IMREAD_LOAD_GDAL

如果设置,使用gdal驱动器装载图像。

IMREAD_REDUCED_GRAYSCALE_2 

Python: cv.IMREAD_REDUCED_GRAYSCALE_2

如果设置,总是转换图像到单通道灰度图像,并且图像尺寸缩减1/2

IMREAD_REDUCED_COLOR_2 

Python: cv.IMREAD_REDUCED_COLOR_2

如果设置,总是转换图像到3通道BGR彩色图像,并且图像尺寸缩减1/2

IMREAD_REDUCED_GRAYSCALE_4 

Python: cv.IMREAD_REDUCED_GRAYSCALE_4

如果设置,总是转换图像到单通道灰度图像,并且图像尺寸缩减1/4

IMREAD_REDUCED_COLOR_4 

Python: cv.IMREAD_REDUCED_COLOR_4

如果设置,总是转换图像到3通道BGR彩色图像,并且图像尺寸缩减1/4

IMREAD_REDUCED_GRAYSCALE_8 

Python: cv.IMREAD_REDUCED_GRAYSCALE_8

如果设置,总是转换图像到单通道灰度图像,并且图像尺寸缩减1/8

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

愚鬼

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值