前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【图像篇】OpenCV图像处理(五)---图像的色彩空间

【图像篇】OpenCV图像处理(五)---图像的色彩空间

作者头像
用户5410712
发布2022-06-01 19:05:56
7340
发布2022-06-01 19:05:56
举报
文章被收录于专栏:居士说AI

我们大家未来的命运如何,将会遭遇到什么,现在谁也难以预料,所能把握的,唯此心而已。

前言

大家好,在上一期的文章中,我们简单的讲解了图像的切割与ROI获取(【图像篇】OpenCV图像处理(四)---图像切割&ROI选取),这样做的目的是,使我们能够对图像的局部进行处理,而不是整个图像,因此,可以大大节约我们的工作时间哦,一起来看看今天的内容吧

一、图像的色彩空间

在前面的图像知识中,我们认识到了图像有两种基本的色彩空间,RGB图像和灰度图像,然后图像还有别的色彩空间,比如:BGR,LAB, HSV等等。

1.1 RGB图像分通道显示

1.原图

2.代码实践

代码语言:javascript
复制
#coding:utf-8
import cv2
import numpy as np
# 图像路径
image_path = 'color.jpg'
# 读取图像
image = cv2.imread(image_path)
# 分通道获取图像
b = image[:, :, 0]
g = image[:, :, 1]
r = image[:, :, 2]
#由于上面额操作只是获取了对应通道的矩阵,就这样显示的话 是灰度图像
# 为了显示每个通道的颜色,需要采用以下操作,将非显示的通道元素设置为0
#image_b = cv2.merge([b, np.zeros(b.shape, np.uint8), np.zeros(b.shape, np.uint8)])
image_b = np.dstack((b, np.zeros(b.shape, np.uint8), np.zeros(b.shape, np.uint8)))
image_g = np.dstack((np.zeros(b.shape, np.uint8), g, np.zeros(b.shape, np.uint8)))
image_r = np.dstack((np.zeros(b.shape, np.uint8), np.zeros(b.shape, np.uint8), r))
cv2.imshow("image_b", image_b)
cv2.imshow("image_g", image_g)
cv2.imshow("image_r", image_r)
cv2.waitKey(0)

代码解读:

上述代码较为简单,基本就是图像的读取操作,接着就是对图像分通道获取矩阵,np.dstack()函数是比较注意的地方,按照代码中的操作解读,就是将不显示的通道进行赋零操作,然后将真正的通道图像显示。

3.效果展示

如上图可以看到,RGB图像分通道的真实效果是这样的,在上上期的文章中,我们并没有讲到这次补上了。

二、色彩空间转换(BGR to RGB)

在前期的文章中,我们了解到opencv读取的图像格式是BGR格式,现在就让我们一起来将其转换为RGB图像吧,同时看看他们的显示的不同。

2.1 代码实践

代码语言:javascript
复制
#coding:utf-8
import cv2
import numpy as np
# 图像路径
image_path = 'color.jpg'
# 读取图像
image = cv2.imread(image_path)
cv2.imshow("image",image)
# 图像格式转换 BGR-RGB
newImg = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)
cv2.imshow("newImg",newImg)
cv2.waitKey(0)

代码解读:

本次代码主要注意:

cv2.cvtColor(image, cv2.COLOR_BGR2RGB)函数,该函数主要是两个参数,第一个是需要转换的图像数据,第二个是想要转换的色彩空间。

2.2 效果展示

三、HSV色彩空间

HSV色彩空间(Hue-色调、Saturation-饱和度、Value-值)将亮度从色彩中分解出来,在图像增强算法中用途很广,在很多图像处理任务中,经常将图像从RGB色彩空间转换到了HSV色彩空间,以便更好地感知图像颜色,利用HSV分量从图像中提取感兴趣的区域。

H的范围是[0,360),S和V的范围是[0,1]。

HSV色彩空间如下图所示,用一个倒圆锥体表示整个色彩空间:

HSV-RGB对应表格:

3.1 RGB到HSV的转换的Demo

3.2 代码实践

代码语言:javascript
复制
# -*- coding:utf-8 -*-

import cv2
image = cv2.imread('color.jpg') # 根据路径读取一张图片
cv2.imshow("BGR", image) # 显示图片

# 转化图片到HSV色彩空间
hsv_image = cv2.cvtColor(image, cv2.COLOR_BGR2HSV)
cv2.imshow("HSV", hsv_image) # 显示图片
cv2.waitKey(0) # 等待键盘触发事件,释放窗口

代码解读:

该段代码中

cv2.cvtColor(image, cv2.COLOR_BGR2HSV)起到了转换的功能,没必要特别记忆,一般的IDE都会有提示的,只要知道用哪个色彩空间就好。

3.3 效果展示

从上图可以看到,转换后的图像变得不那么好看了,那这样做有啥用呢,其实这样做大有用处,比如我们要提取天上的云彩,就可以通过设置HSV色彩空间的高低阈值来做,具体的操作我们后期再来实践。

END

结语

好了,本期的OpenCV图像处理知识分享结束了,今天的内容有点多,希望大家下去好好理解并且实践哦,如果遇到不太好理解的地方,请记得后台咨询小编哦,我们一起来解决!

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-03-01,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 IT进阶之旅 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
图像处理
图像处理基于腾讯云深度学习等人工智能技术,提供综合性的图像优化处理服务,包括图像质量评估、图像清晰度增强、图像智能裁剪等。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档