栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

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

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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

【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的可以直接跳过本篇学习;下一篇将讲解图像的绘制,这样是为之后的项目做一个铺垫;

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/587663.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号