Opencv-python(cv2)图像读取、显示与保存,看这一篇就够了

图像读取之cv2.imread()函数

  opencv读取图像主要依赖于cv2.imread()函数,cv2.imread()的函数原型为Mat imread( const string& filename, int flags=1 ),其中Mat为Opencv最重要的数据结构,它在Opencv中被定义为一个类,它通过把图像视为一个矩阵来存储数据。作为类,它的属性包含了图像矩阵数据data、图像矩阵维度dims(如32*32图像维度为2)、图像矩阵行数等,关于Mat结构的详细介绍,可以参考OpenCV-Mat结构详解。需要注意的是,Opencv的函数可以直接处理numpy的数据类型——多维数组,这为我们在深度学习框架中保存图像、归一化图像等操作时使用opencv提供了极大方便,我猜测是因为Mat和多维数组都可以代表矩阵数据。
  在cv2.imread()中,它有两个形参,首先是图像的文件名(索引地址),第二个参数flags用于指定以什么样的格式来读取图像,它的取值有以下几种情况:
  (1)flags=1这也是默认情况,代表选择CV_LOAD_IMAGE_UNCHANGED方式,即采用保持原始格式的方式读取图像。比如待读取的图像原来是灰度图像,读取后还是灰度图像。
  (2)flags=2,这种情况代表选择CV_LOAD_IMAGE_GRAYSCALE方式,即以灰度图像格式读取图像。无论原始图像原来是什么格式,读取后都的结果都转变为灰度图像。
  (3)flags=3,这种情况代表选择CV_LOAD_IMAGE_COLOR方式,即以BGR格式读取图像。无论原始图像原来是什么格式,读取后都的结果都转变为BGR形式的三通道图像。
  需要特别注意的是:cv2.imread()函数读取RGB图像时,返回的图像格式的通道并不是按R、G、B排列的,而是按B、G、R顺序排列的!当然,如果你使用cv2.imread()读取RGB图像,又用cv2.imshow()显示图像,不会有什么问题。但如果你用cv2.imread()读取RGB图像,再用其他库方法显示,就很有可能出现问题了,参考matplotlib & visdom 的图片显示问题
  用法示例如下:

评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值