【OpenCV学习】(三)色彩及矩阵操作

本文介绍了OpenCV中的颜色空间转换,如RGB到BGR、HSV,以及如何使用Numpy进行矩阵操作,包括创建、检索和修改图像数据。此外,还讨论了Mat对象的深浅拷贝,以及图像的通道分离与合并。这些基础知识为后续的图像处理和绘制奠定了基础。
摘要由CSDN通过智能技术生成

【OpenCV学习】(三)色彩及矩阵操作

背景

之前主要介绍了数据的读取和展示操作,本篇将开始介绍数据的简单处理操作;

一、颜色空间转换

1、介绍一些常见的颜色空间

RGB:人眼的色彩空间;

BGR:OpenCV默认使用的色彩空间;

HSV的说明:

  • Hue:色相,即色彩如红色、绿色;
  • Saturation:饱和度,颜色的纯度;
  • Value:明亮度;

在这里插入图片描述

2、转换色彩空间

cvtColor(原始数据,变换格式);

变换格式有很多种,例如:COLOR_BGR2RGB、COLOR_BGR2BGRA等;

代码案例:

cv2.cvtColor(img, cv2.COLOR_BGR2RGB)

二、Numpy基本操作

Numpy使用原因:

1、OpenCV中用到的矩阵都要转换成Numpy数组;

2、Numpy是一个经过高度优化的Python数值库;

相信大家对于Numpy都比较熟悉,这里主要来回顾一下:

1、创建矩阵

  • 创建数组:array()
  • 创建全0数组:zeros()/ ones()
  • 创建全值数组:full()
  • 创建单位矩阵:identity()/ eye()

2、Numpy的检索

需要注意的是,我们访问img[y,x]的时候,第一个元素代表竖轴,第二个元素代表横轴;

如果想要给一个像素点中的某个通道赋值,也可以如下:

img[100, 100] = [0, 0, 255]		# B,G,R分别赋值

3、获取子矩阵(ROI)

举个例子,得到图像的一个ROI区域:

img = cv2.imread('test2.jpg')
roi = img[100:400, 200:400, :]

当然不只有这一种用法,还有很多的使用方式,在实际工程中可以多尝试;

三、Mat

定义:从Python角度来说Mat就是一个矩阵,也是R、G、B的组合;

Mat属性

在这里插入图片描述

Mat拷贝

Mat的拷贝形式有两种:浅拷贝与深拷贝;

浅拷贝示意图:

在这里插入图片描述

代码实现:

A = cv2.imread("test.jpg")
B = A

特点:改变B的数据,A也会发生改变;

深拷贝代码实现:

A = cv2.imread("test.jpg")
B = A.copy()

特点:不会改变原来Mat的数据,是将Data数据拷贝一份;

图像属性

  • img.shape:图像的高度、长度和通道数;
  • img.size:图像占用空间大小(高度 x 长度 x 通道数);

通道的分离与合并

使用API:

  • split(mat):分离通道;
  • merge((ch1,ch2,ch3)):合并通道;

代码案例:

b, g, r = cv2.split(img)
img2 = cv2.merge((b, g, r))

总结

本篇讲的比较基础,主要是介绍一些基础知识,对于了解图像和Mat的可以直接跳过本篇学习;下一篇将讲解图像的绘制,这样是为之后的项目做一个铺垫;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值