想要完整全面地学习opencv,仅凭阅读samples的示例源码是不够的。毕竟opencv是一个拥有很是多函数的程序库,因此在每学习一个函数时,芒果以为有必要记录下来,分享给有须要的同窗。因而,就有了这一篇的开始,之后的这个就归为opencv函数学习的系列了,篇幅应该都会比较短。html
imread函数的做用很是简单,从函数的名称也能够看出来,imread为image read的缩写,即图像读取的意思,。那么imread函数的做用就很明显了,负责读取图像。其实学过matlab的同窗就会知道,matlab中也有一个读取图像的函数也命名为imread,这是opencv借鉴了matlab而命名的,由于在opencv1.x时代,加载图像的函数并不叫imread,二是由cvLoadImage函数负责。python
话很少说,先了解imread函数的原型,从opencv的最新document能够查阅到imread原型为ios
#include <opencv2/imgcodecs.hpp> Mat cv::imread ( const String & filename, int flags = IMREAD_COLOR )
Python: retval = cv.imread( filename[, flags] )
能够看到,imread函数原型很是简单,能够总结为三点c++
参数1 补充:web
imread函数支持读取的图像格式有函数
参数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的方向标志旋转图像。 |
#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't openc the file!" << endl; getchar(); } return 0; }
opencv的官方文档document实际上是一份很是好的资料,关于opencv的几乎均可以在上面查阅获得,不过缺点就是文档为全英文的,这个须要本身克服一下。code
本文由芒果浩明发布,转载需注明来源。 本文连接:https://mangoroom.cn/opencv/opencv-learning-imread.htmlorm