有骨雨刷,犬夜叉完结篇国语全集,gvhunter
想要完整全面地学习opencv,仅凭阅读samples的示例源码是不够的。毕竟opencv是一个拥有非常多函数的程序库,所以在每学习一个函数时,芒果觉得有必要记录下来,分享给有需要的同学。于是,就有了这一篇的开始,以后的这个就归为opencv函数学习的系列了,篇幅应该都会比较短。
imread函数的作用非常简单,从函数的名称也可以看出来,imread为image read的缩写,即图像读取的意思,。那么imread函数的作用就很明显了,负责读取图像。其实学过matlab的同学就会知道,matlab中也有一个读取图像的函数也命名为imread,这是opencv借鉴了matlab而命名的,因为在opencv1.x时代,加载图像的函数并不叫imread,二是由cvloadimage函数负责。
话不多说,先了解imread函数的原型,从opencv的最新document可以查阅到imread原型为
#include <opencv2/imgcodecs.hpp> mat cv::imread ( const string & filename, int flags = imread_color )
python: retval = cv.imread( filename[, flags] )
可以看到,imread函数原型非常简单,可以总结为三点
参数1 补充:
imread函数支持读取的图像格式有
参数2 补充:
这些flags值被定义在enum cv::imreadmodes枚举类里面
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的几乎都可以在上面查阅得到,不过缺点就是文档为全英文的,这个需要自己克服一下。
本文由芒果浩明发布,转载需注明来源。
本文链接:
如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复
如何在没有core文件的情况下用dmesg+addr2line定位段错误
用QT制作3D点云显示器——QtDataVisualization
网友评论