本节主要翻译自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内的色彩管理操作是有差异的。
- 对于Linux,BSD风格和其它类Unix的开源操作系统,OpenCV查找操作系统支持的图像编解码器。一定要记得安装相关的包(不要忘了这些开发文件,如,"libjpeg-dev",在Debian 和Ubuntu中)以便获得编解码的支持或者在CMake中打开OPENCV_BUILD_3RDPARTY_LIBS标志开关。
- 在CMake设置WITH_GDAL 标志为true,且使用IMREAD_LOAD_GDAL 来加载图像时,GDAL 驱动器将用于解码图像,支持: Raster, Vector格式。
- 如果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, |
|
|
|
|
| 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 |

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

被折叠的 条评论
为什么被折叠?



