OpenCV4萌新之路——详解图像读取函数 “imread”

  • 一、函数简析
  • 二、参数详解
    • 1.String& filename
    • 2.flags = IMREAD_COLOR
  • 三、测试代码
    • 1. 输入图像参数
    • 2. 输出图像显示
    • 3. 图像参数
    • 4. 其他测试
  • 四、参考文献

处理图像第一步当然是要读取一张图像,OpenCV给出的方法也很简单:

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

一、函数简析

头文件 #include <opencv2/imgcodecs.hpp>

imread 返回类型 命名空间 函数名 参数1 参数2
详细 Mat cv imread const String& filename int flags = IMREAD_COLOR
详细 - - - 文件路径+文件名 图像读取模式

二、参数详解

1.String& filename

输入可为相对路径也可为绝对路径,运用方法参见测试代码。

注:
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)

2.flags = IMREAD_COLOR

枚举名 定义 解释
-1 IMREAD_UNCHANGED If set, return the loaded image as is (with alpha channel, otherwise it gets cropped). Ignore EXIF orientation. 如果设置,则按原样返回加载的图像(使用Alpha通道,否则会被裁剪)
0 IMREAD_GRAYSCALE If set, always convert image to the single channel grayscale image (codec internal conversion). 如果设置,则始终将图像转换为单通道灰度图像(编解码器内部转换)
1 IMREAD_COLOR If set, always convert image to the 3 channel BGR color image. 如果设置,请始终将图像转换为3通道BGR彩色图像
2 IMREAD_ANYDEPTH If set, return 16-bit/32-bit image when the input has the corresponding depth, otherwise convert it to 8-bit. 如果设置,则在输入具有相应深度时返回16位/ 32位图像,否则将其转换为8位
4 IMREAD_ANYCOLOR If set, the image is read in any possible color format. 如果设置,则以任何可能的颜色格式读取图像
8 IMREAD_LOAD_GDAL If set, use the gdal driver for loading the image. 如果设置,使用gdal驱动程序加载图像
16 IMREAD_REDUCED_GRAYSCALE_2 If set, always convert image to the single channel grayscale image and the image size reduced 1/2. 如果设置,则始终将图像转换为单通道灰度图像,图像尺寸减小1/2
17 IMREAD_REDUCED_COLOR_2 If set, always convert image to the 3 channel BGR color image and the image size reduced 1/2. 如果设置,则始终将图像转换为3通道BGR彩色图像,图像尺寸减小1/2
32 IMREAD_REDUCED_GRAYSCALE_4 If set, always convert image to the single channel grayscale image and the image size reduced 1/4. 如果设置,则始终将图像转换为单通道灰度图像,图像尺寸减小1/4
33 IMREAD_REDUCED_COLOR_4 If set, always convert image to the 3 channel BGR color image and the image size reduced 1/4. 如果设置,则始终将图像转换为3通道BGR彩色图像,图像尺寸减小1/4
64 IMREAD_REDUCED_GRAYSCALE_8 If set, always convert image to the single channel grayscale image and the image size reduced 1/8. 如果设置,则始终将图像转换为单通道灰度图像,图像尺寸减小1/8
65 IMREAD_REDUCED_COLOR_8 If set, always convert image to the 3 channel BGR color image and the image size reduced 1/8. 如果设置,则始终将图像转换为3通道BGR彩色图像,图像尺寸减小1/8
128 IMREAD_IGNORE_ORIENTATION If set, do not rotate the image according to EXIF’s orientation flag. 如果设置,请不要根据EXIF的方向标志旋转图像

三、测试代码

#include<iostream>
#include<opencv2/opencv.hpp>
using namespace cv;
using namespace std;#define IMAGE_ABSOLUTE_PATH "F:/Leraning_OpenCV4/Sakai_Izumi.jpg" //绝对路径
#define IMAGE_RELATIVE_PATH "./Sakai_Izumi.jpg" //相对路径int main()
{//读取图片Mat src = imread(IMAGE_ABSOLUTE_PATH, IMREAD_COLOR);//Mat src = imread(IMAGE_RELATIVE_PATH, 1);//判读是否成功读取图片if (src.empty()){std::cout << "Load img failed!" << endl;return 0;}else{std::cout << "Load img success!" << endl;}//显示图片imshow("src", src);waitKey(0);return 1;
}

1. 输入图像参数

2. 输出图像显示

3. 图像参数

4. 其他测试

ImreadModes 0 读取灰度图

ImreadModes 16 读取灰度图,宽、高都为原图的1/2

大家可以参考IMREAD_COLOR中不同的图像读取模式,对比一下显示图像,体会一下差异在哪。

四、参考文献

  1. Image file reading and writing.

OpenCV4萌新之路——详解图像读取函数 “imread”相关推荐

  1. 详解OpenCV的函数imread()和函数imshow(),并利用它们实现对图像的读取和显示

    详解OpenCV的函数imread()和函数imshow(),并利用它们实现对图像的读取和显示 目录 01-详解函数imread():读取图像文件 02-详解函数imshow():显示图像 03-使用 ...

  2. 游戏策划萌新之路(2)--游戏界的抄袭与借鉴

    抄袭,是中国游戏界绕不开的话题,游戏机制和玩法抄袭成本之低.法律追究之难以及国内知识产权保护力度不足成为助长这一风气的主要问题. 入行第四天,策划组例会. 此时的我正在进行一个关于模拟经营类游戏的玩法 ...

  3. RxJava2.x 萌新之路 操作符篇

    操作符总览 Rxjava为函数式编程提供了众多的操作符,操作符的运用可以使得程序逻辑更为简洁. 网上已有众多操作符说明教学,但不亲身总结和尝试一遍,是难以体会到其中奥妙与融会贯通的,简单记录总结以备大 ...

  4. FL的萌新之路,开始了!

    作为小白的我终于准备上路了,先看下第一部分(/滑稽). 博客园不支持插入html插件,点我预览文件>> 没错就是sans的番茄酱! 以后还得更努力的学习啊! 转载于:https://www ...

  5. 从萌新玩家到游戏开发,IEG首位女专家的升级之路

    我们为什么叫「递归」 "递归" (recursion) 是一种在程序设计语言中被广泛使用的算法.它有两大特点,一是调用自己,二是化繁为简.我们当中那些优秀的技术人又何尝不是如此?他 ...

  6. 从懵懂无知到独挡一面——那些萌新程序员的进阶之路

    刚刚入职一家IT公司成为一名初级开发工程师,我们如何在技术这条路线上野蛮生长呢. 这条技术进阶之路就是一个金字塔形,越往上人越少. 作为一个初出茅庐的开发人员提升自己和职业生涯前景 无论你是正在找你的 ...

  7. 萌新的java学习之路——第一周

    萌新的java学习之路--第一周 第一周的学习 这是我学习Java的第一周,写这个博客更多的时为了总结自己这一周的学习情况,如果有人看到我写的博客,有什么问题的话,可以问我.虽然我也是一个小白,但我会 ...

  8. 详解图像形态学中的击中击不中变换操作(HMT),并提醒大家OpenCV4中的击中击不中变换操作是有问题的

    大家看这篇博文前可以先看一看下面这篇博文,下面这篇博文是这篇博文的基础: 详解图像形态学操作之图形的腐蚀和膨胀的概念和运算过程,并利用OpenCV的函数erode()和函数dilate()对图像进行腐 ...

  9. linux装系统到u盘,萌新的Linux之路(1):安装Linux系统到U盘

    1. 选择Linux系统 Linux有着诸多的发行版,作为萌新一枚,选择一个合适的Linux系统总是很让人为难啊.果断百度,Ubuntu我觉得最好看,就选她吧!放几张截图让大家感受一下吧. 桌面截图 ...

最新文章

  1. as安装过程中gradle_柯赛分享:楼顶大字安装过程中需要用到哪些工具?
  2. 列表组件之ListView
  3. 优秀国外测试网站集合
  4. kafka查看topic数据消费情况
  5. python教程list类型_Python数据类型之list相关常用操作
  6. md5值是什么意思_详解:PER?霍林格效率值?这个最火的高阶数据究竟是什么意思?...
  7. c++循环执行一个函数_Python—程序的循环结构
  8. h5 先加载小图_萌宝学诗|读诗、画诗、唱诗,尽在小图姐姐的《九月九日忆山东兄弟》中!...
  9. mysql 查找相似数据_局部敏感哈希LSH(Locality-Sensitive Hashing)——海量数据相似性查找技术...
  10. 工具记录,使用jarsigner 对APK进行签名
  11. php代码建议,php代码优化建议
  12. 【Delta并联机器人Simscape仿真(正运动学、逆运动学)】
  13. OpenCV学习cvtColor函数
  14. Elasticsearch相关操作梳理
  15. 手机用html电视,手机怎么连接电视
  16. 全球家务机器人发展现状及未来趋势
  17. Linux学习笔记(四)Linux基础操作
  18. 推荐8个堪称神器的网站!
  19. SpringBoot 项目实现 Excel 导入导出功能
  20. 互联网快讯:华为正式开启二手机业务;法院审理认定阿卡索赔猿辅导20万;极米高性能投影产品获用户青睐;谷歌Pixel 6 Pro首次放弃使用高通基带

热门文章

  1. 想要制作令人震撼的大屏可视化,要如何提升自己的可视化效果?
  2. 2018计算机系统结构全国卷,2018年10月高等教育自学考试全国统一命题考试02325计算机系统结构试卷及答案.doc...
  3. linux命令 (管道命令)
  4. 代码函数从零开始学习OpenCL开发(二)一个最简单的示例与简单性能分析
  5. 穿冰丝很凉快,是有降温作用吗?穿戴冰丝衣物要注意哪些?
  6. killall 命令使用
  7. 线性代数(1)- 向量空间
  8. Hive2 beeline 使用方法
  9. Http请求全过程简述
  10. Flashback Query, Flashback Version Query