一、目标

学习imread()函数正确读入图像的方式,imread()用不对,对以后的图像处理有很大的影响。
有时候图片是灰度图,但是你用imread()读入后它就变成了彩色图,只不过它的三个通道的值是一样的。
灰度图是单通道的。
彩色图是三通道的(B,G,R),但是彩色图像的三通道的值相同时它也是灰色的。

二、函数说明

函数原型:

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

第一个参数是图片的绝对地址
第二个参数表示图片读入的方式(flags可以缺省,缺省时flags=1,表示以彩色图片方式读入图片)
flags>0时表示以彩色方式读入图片
flags=0时表示以灰度图方式读入图片
flags<0时表示以图片的本来的格式读入图片

三、程序代码

C:\Users\lidabao\Desktop\Lena.bmp这是一张彩色图片
C:\Users\lidabao\Desktop\Lena1.bmp这是一张灰度图片

#include "cv.h"                             //  OpenCV 文件头
#include "highgui.h"
#include "cvaux.h"
#include "cxcore.h"
#include "opencv2/opencv.hpp"
#include "opencv2/imgproc.hpp"
#include <iostream>
#include <string>using namespace cv;
using namespace std;int main()
{Mat image1, image2, image3, image4, image5, image6;//Mat是OpenCV最基本的数据结构,这是定义一个图像矩阵类型image1 = imread("C:\\Users\\lidabao\\Desktop\\Lena.bmp");//读入图片数据cout << "原图1的通道数:" << image1.channels() << endl;namedWindow("原图1", WINDOW_AUTOSIZE); // 创建一个窗口imshow("原图1", image1);    // 在窗口中显示图片image2 = imread("C:\\Users\\lidabao\\Desktop\\Lena1.bmp");//读入图片数据cout << "原图2的通道数:" << image2.channels() << endl;namedWindow("原图2", WINDOW_AUTOSIZE); // 创建一个窗口imshow("原图2", image2);    // 在窗口中显示图片image3 = imread("C:\\Users\\lidabao\\Desktop\\Lena.bmp",0);//读入图片数据cout << "原图3的通道数:" << image3.channels() << endl;namedWindow("原图3", WINDOW_AUTOSIZE); // 创建一个窗口imshow("原图3", image3);    // 在窗口中显示图片image4 = imread("C:\\Users\\lidabao\\Desktop\\Lena1.bmp",0);//读入图片数据cout << "原图4的通道数:" << image4.channels() << endl;namedWindow("原图4", WINDOW_AUTOSIZE); // 创建一个窗口imshow("原图4", image4);    // 在窗口中显示图片image5 = imread("C:\\Users\\lidabao\\Desktop\\Lena.bmp",-1);//读入图片数据cout << "原图5的通道数:" << image5.channels() << endl;namedWindow("原图5", WINDOW_AUTOSIZE); // 创建一个窗口imshow("原图5", image5);    // 在窗口中显示图片image6 = imread("C:\\Users\\lidabao\\Desktop\\Lena1.bmp",-1);//读入图片数据cout << "原图6的通道数:" << image6.channels() << endl;namedWindow("原图6", WINDOW_AUTOSIZE); // 创建一个窗口imshow("原图6", image6);    // 在窗口中显示图片waitKey(0); // 等待一次按键,程序结束return 0;
}

四、解释

1、省略flags

省略flags表示flags=1;

    image1 = imread("C:\\Users\\lidabao\\Desktop\\Lena.bmp");//读入图片数据cout << "原图1的通道数:" << image1.channels() << endl;

表示以彩色图片方式读入图片
image1.channels() 表示获取image1的通道数

2、flags=1

    image3 = imread("C:\\Users\\lidabao\\Desktop\\Lena.bmp",0);//读入图片数据cout << "原图3的通道数:" << image3.channels() << endl;

表示以灰度图片方式读入图片
image3.channels() 表示获取image3的通道数

2、flags=-1

    image5 = imread("C:\\Users\\lidabao\\Desktop\\Lena.bmp",0);//读入图片数据cout << "原图5的通道数:" << image5.channels() << endl;

表示以原本的格式读入
image5.channels() 表示获取image5的通道数

五、结果

程序运行结果如下:

注意

写程序时要正确的运用imread()函数

OPENCV入门教程四:imread函数读入图像相关推荐

  1. 转载:【OpenCV入门教程之四】 ROI区域图像叠加初级图像混合 全剖析

    [OpenCV入门教程之四] ROI区域图像叠加&初级图像混合 全剖析 浅墨_毛星云 2014-03-10 12:48:05 157425 收藏 19 最后发布:2014-03-10 12:4 ...

  2. 转载:【opencv入门教程之六】创建Trackbar图片对比度、亮度值调整

    [OpenCV入门教程之六] 创建Trackbar & 图像对比度.亮度值调整 浅墨_毛星云 2014-03-18 21:43:18 103746 收藏 21 最后发布:2014-03-18 ...

  3. 转载:【opencv入门教程之一】:配置

    本系列文章由@浅墨_毛星云 出品,转载请注明出处.   文章链接: http://blog.csdn.net/poem_qianmo/article/details/19809337 作者:毛星云(浅 ...

  4. 转载:【opencv入门教程之三】:图片的载入|显示|输出

    本系列文章由@浅墨_毛星云 出品,转载请注明出处. 文章链接: http://blog.csdn.net/poem_qianmo/article/details/20537737 作者:毛星云(浅墨) ...

  5. 转载:【opencv入门教程之三】:组件结构

    本系列文章由zhmxy555(毛星云)编写,转载请注明出处. 文章链接: http://blog.csdn.net/poem_qianmo/article/details/19925819 作者:毛星 ...

  6. 转载:【OpenCV入门教程之五】 分离颜色通道多通道图像混合

    本系列文章由@浅墨_毛星云 出品,转载请注明出处. 文章链接: http://blog.csdn.net/poem_qianmo/article/details/21176257 作者:毛星云(浅墨) ...

  7. 【OpenCV入门教程之五】 分离颜色通道多通道图像混合(转)

    本系列文章由@浅墨_毛星云 出品,转载请注明出处. 文章链接: http://blog.csdn.net/poem_qianmo/article/details/21176257 作者:毛星云(浅墨) ...

  8. 【OpenCV入门教程之十三】OpenCV图像金字塔:高斯金字塔、拉普拉斯金字塔与图片尺寸缩放

    本系列文章由@浅墨_毛星云 出品,转载请注明出处. 文章链接: http://blog.csdn.net/poem_qianmo/article/details/26157633 作者:毛星云(浅墨) ...

  9. 【OpenCV入门教程之三】 图像的载入,显示和输出 一站式完全解析

    [-] 一开胃菜之一  关于OpenCV的命名空间 二开胃菜之二  关于Mat类型 三图像的载入和显示 imread函数 namedWindow函数 imshow函数 四输出图像到文件imwrite函 ...

最新文章

  1. 多快好省的宏基因组研究技巧 — 资深专家分享
  2. 一款蓝牙音频无线传输设备上拆下的光电管
  3. python下载的库要放到哪里-Python下载url并保存文件的三种方法
  4. turtle库是python的第三方库吗_turtle库的使用
  5. python2.7.12操作Hbase
  6. u-boot中filesize环境变量
  7. 三国树状信息展示 winform
  8. Python学习笔记——输入与输出用法
  9. Redis 2.8.18 安装报错 error: jemalloc/jemalloc.h: No such file or directory解决方法
  10. 华为机试HJ88:扑克牌大小
  11. mysql存储过程字符串拼接字符串_mysql存储过程求大神(拼接字符串)
  12. 先锋网络电视 v3.36.4 钻石版 怎么用
  13. python中def func是什么意思_python中的函数def和函数的参数
  14. c语言课程成绩分析报告范文,c语言课程分析报告题目.doc
  15. NoSQL Redis
  16. java教务管理系统数据库设计_计算机毕业设计选题及代做定做流程
  17. 51单片机-LED模块-来回流水灯
  18. AI中怎么给文字加粗
  19. 全志H616开发板Orange Pi Zero2连接香橙派5寸TFT液晶屏的测试说明
  20. error: failed to push some refs to 'git@github.com: xxx / xxxx.git'

热门文章

  1. 解决Tableau做漏斗图转化率不对的问题
  2. Linux中使用userdel命令删除用户时出现错误 “userdel: user XXX is currently used by process XXX”*
  3. 域适应行人重识别中的多中心表征网络
  4. 用HTML创建图像和多媒体页面
  5. 红石外汇 RedstoneFX|每日汇评:英镑多头在等待FOMC和英国央行决议后发力
  6. 超过20G的文件怎么保存_盐焗鸡卤水应该怎么做比较的好吃?你真的道?看老奶奶的制作方法...
  7. 远程连接超过最大用户数的解决办法
  8. 小型反渗透设备价格表
  9. 如何做一个体贴的男友?(转自百度
  10. 当老实人遇到世态炎凉