opencv学习之读取图像-imread函数

想要完整全面地学习opencv,仅凭阅读samples的示例源码是不够的。毕竟opencv是一个拥有很是多函数的程序库,因此在每学习一个函数时,芒果以为有必要记录下来,分享给有须要的同窗。因而,就有了这一篇的开始,之后的这个就归为opencv函数学习的系列了,篇幅应该都会比较短。html

imread函数

imread函数做用

imread函数的做用很是简单,从函数的名称也能够看出来,imread为image read的缩写,即图像读取的意思,。那么imread函数的做用就很明显了,负责读取图像。其实学过matlab的同窗就会知道,matlab中也有一个读取图像的函数也命名为imread,这是opencv借鉴了matlab而命名的,由于在opencv1.x时代,加载图像的函数并不叫imread,二是由cvLoadImage函数负责。python

imread函数原型

话很少说,先了解imread函数的原型,从opencv的最新document能够查阅到imread原型为ios

imread c++原型

#include <opencv2/imgcodecs.hpp>
Mat cv::imread	(	const String & 	filename,
int 	flags = IMREAD_COLOR 
)

imread python原型

Python:
retval	=	cv.imread(	filename[, flags]	)

能够看到,imread函数原型很是简单,能够总结为三点c++

  • 返回值,Mat 类型, 即返回读取的图像,读取图像失败时返回一个空的矩阵对象(Mat::data == NULL)
  • 参数1 filename, 读取的图片文件名,可使用相对路径或者绝对路径,但必须带完整的文件扩展名(图片格式后缀)
  • 参数2 flags, 一个读取标记,用于选择读取图片的方式,默认值为IMREAD_COLOR,flag值的设定与用什么颜色格式读取图片有关

参数1 补充:web

imread函数支持读取的图像格式有函数

  • Windows bitmaps - *.bmp, *.dib (always supported)
  • JPEG files - *.jpeg, *.jpg, *.jpe (see the Note section)
  • JPEG 2000 files - *.jp2 (see the Note section)
  • Portable Network Graphics - *.png (see the Note section)
  • WebP - *.webp (see the Note section)
  • Portable image format - *.pbm, *.pgm, *.ppm *.pxm, *.pnm (always supported)
  • PFM files - *.pfm (see the Note section)
  • Sun rasters - *.sr, *.ras (always supported)
  • TIFF files - *.tiff, *.tif (see the Note section)
  • OpenEXR Image files - *.exr (see the Note section)
  • Radiance HDR - *.hdr, *.pic (always supported)
  • Raster and Vector geospatial data supported by GDAL (see the Note section) Note

参数2 补充:学习

这些flags值被定义在enum cv::ImreadModes枚举类里面spa

c++定义 python定义 说明
IMREAD_UNCHANGED Python: cv.IMREAD_UNCHANGED 若是设置,则按原样返回加载的图像(使用Alpha通道,不然会被裁剪)
IMREAD_GRAYSCALE Python: cv.IMREAD_GRAYSCALE 若是设置,则始终将图像转换为单通道灰度图像(编解码器内部转换)。
IMREAD_COLOR Python: cv.IMREAD_COLOR 若是设置,请始终将图像转换为3通道BGR彩色图像。
IMREAD_ANYDEPTH Python: cv.IMREAD_ANYDEPTH 若是设置,则在输入具备相应深度时返回16位/ 32位图像,不然将其转换为8位。
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。
IMREAD_REDUCED_COLOR_8 Python: cv.IMREAD_REDUCED_COLOR_8 若是设置,则始终将图像转换为3通道BGR彩色图像,图像尺寸减少1/8。
IMREAD_IGNORE_ORIENTATION Python: cv.IMREAD_IGNORE_ORIENTATION 若是设置,请不要根据EXIF的方向标志旋转图像。

imread函数使用示例

#include<iostream>

#include<opencv2/opencv.hpp>

using namespace cv;

using namespace std;

int main()

{

	//read the image

	Mat image = imread("./clock.jpg");

	if (image.data != NULL)

	{

		//show the image

		imshow("clock", image);

		waitKey(0);

	}

	else

	{

		cout << "can&apos;t openc the file!" << endl;

		getchar();

	}

	return 0;

}

尾巴

opencv的官方文档document实际上是一份很是好的资料,关于opencv的几乎均可以在上面查阅获得,不过缺点就是文档为全英文的,这个须要本身克服一下。code


本文由芒果浩明发布,转载需注明来源。 本文连接:https://mangoroom.cn/opencv/opencv-learning-imread.htmlorm

相关文章
相关标签/搜索