【OpenCV 您所在的位置:网站首页 rgb怎么转换成hsv 【OpenCV

【OpenCV

2023-08-20 04:32| 来源: 网络整理| 查看: 265

✨博客主页:米开朗琪罗儿🎈 ✨博主爱好:羽毛球🏸 ✨年轻人要:Living for the moment(活在当下)!💪 🏆推荐专栏:【图像处理】【千锤百炼Python】【深度学习】【排序算法】

目录 😺一、通道的拆分与合并🐶1.1 通过索引拆分🐶1.2 通过函数拆分🐶1.3 通道合并 😺二、简述各色彩空间🐶2.1 GRAY色彩空间🦄2.1.1 RGB转GRAY🦄2.1.2 GRAY转RGB 🐶2.2 XYZ色彩空间🦄2.2.1 RGB转XYZ🦄2.2.2 XYZ转RGB 🐶2.3 HSV色彩空间🦄2.3.1 RGB转HSV🦄2.3.2 HSV转RGB 🐶2.4 YCrCb色彩空间🦄2.4.1 RGB转YCrCb🦄2.4.2 YCrCb转RGB 😺三、类型转换函数😺四、转换实例🐶4.1 BGR转化至GRAY🐶4.2 BGR转化至HSV🐶4.3 BGR转化至YCrCb 色彩空间类型转换:它是将图像从一个色彩空间转换到另外一个色彩空间,每个色彩空间都有自己擅长的处理问题的领域。

😺一、通道的拆分与合并

在RGB色彩空间中,图像通道的顺序是R→G→B,即第1个通道是R通道,第2个通道是G通道,第3个通道是B通道。注:在OpenCV中,通道顺序是B→G→R。

接下来我们考虑如何将3个通道进行拆分并单独显示其中一个通道的图像,这里给出两种拆分方式:

🐶1.1 通过索引拆分

我们使用下列语句操作:

b = lena2[:, :, 0] g = lena2[:, :, 1] r = lena2[:, :, 2]

接下来我们看一段程序展示:

import cv2 lena2 = cv2.imread(r'C:\Users\Wxr\Desktop\lena3.jpg') cv2.imshow("lena2", lena2) b = lena2[:, :, 0] g = lena2[:, :, 1] r = lena2[:, :, 2] cv2.imshow("b", b) cv2.imshow("g", g) cv2.imshow("r", r) cv2.waitKey()

本程序实现了通道的拆分与各通道的分别展示。

代码运行结果如下: 在这里插入图片描述

🐶1.2 通过函数拆分

我们使用函数b, g, r = cv2.split()拆分通道。

接下来我们看一段程序展示:

import cv2 lena3 = cv2.imread(r'C:\Users\Wxr\Desktop\lena3.jpg') cv2.imshow("lena3", lena3) b, g, r = cv2.split(lena3) cv2.imshow("b", b) cv2.imshow("g", g) cv2.imshow("r", r) cv2.waitKey()

运行结果如下: 在这里插入图片描述 可以看出不论是通过索引方式还是函数拆分得到的通道图像,结果都是一样的。

🐶1.3 通道合并

通道合并是通道拆分的逆过程,我们使用函数cv2.merge()实现通道合并。

下面看一段程序展示:

import cv2 lena3 = cv2.imread(r'C:\Users\Wxr\Desktop\lena3.jpg') cv2.imshow("lena3", lena3) b, g, r = cv2.split(lena3) bgr = cv2.merge([b, g, r]) rgb = cv2.merge([r, g, b]) cv2.imshow("bgr", bgr) cv2.imshow("rgb", rgb) cv2.waitKey()

程序运行结果如下: 在这里插入图片描述 可以看出,按照B、G、R顺位排列出的图像与原图是一致的,也就验证了OpenCV的通道顺序是B→G→R。

😺二、简述各色彩空间 🐶2.1 GRAY色彩空间

GRAY指的是8位灰度图,有256各灰度级,像素值范围:[0,255]

🦄2.1.1 RGB转GRAY

标准转换公式: ​ ​ ​ ​ ​ ​ ​ G r a y = 0.299 ⋅ R + 0.587 ⋅ G + 0.114 ⋅ B ​​​​​​​Gray=0.299\cdot R+0.587\cdot G+0.114\cdot B ​​​​​​​Gray=0.299⋅R+0.587⋅G+0.114⋅B 简化转换公式: G r a y = R + G + B 3 Gray= \frac{R+G+B}{3} Gray=3R+G+B​

🦄2.1.2 GRAY转RGB

转化公式: R = G = B = G R A Y R=G=B=GRAY R=G=B=GRAY

🐶2.2 XYZ色彩空间

XYZ色彩空间是国际照明委员会(CIE)在进行了大量正常人视觉测量和统计后建立的。

🦄2.2.1 RGB转XYZ

转换公式: [ X Y Z ] = [ 0.412453 0.357580 0.180423 0.212671 0.715160 0.072169 0.019334 0.119193 0.950227 ] ⋅ [ R G B ] \begin{bmatrix} X \\ Y \\ Z \end{bmatrix}=\begin{bmatrix} 0.412453 & 0.357580 & 0.180423 \\ 0.212671 & 0.715160 & 0.072169 \\ 0.019334 & 0.119193 & 0.950227 \end{bmatrix}\cdot \begin{bmatrix} R \\ G \\ B \end{bmatrix} ⎣⎡​XYZ​⎦⎤​=⎣⎡​0.4124530.2126710.019334​0.3575800.7151600.119193​0.1804230.0721690.950227​⎦⎤​⋅⎣⎡​RGB​⎦⎤​

🦄2.2.2 XYZ转RGB

转换公式: [ R G B ] = [ 3.240479 − 1.53715 − 0.498535 − 0.969256 1.875991 0.041556 0.055648 − 0.204043 1.057311 ] ⋅ [ X Y Z ] \begin{bmatrix} R \\ G \\ B \end{bmatrix}=\begin{bmatrix} 3.240479 & -1.53715 & -0.498535 \\ -0.969256 & 1.875991 & 0.041556 \\ 0.055648 & -0.204043 & 1.057311 \end{bmatrix}\cdot \begin{bmatrix} X \\ Y \\ Z \end{bmatrix} ⎣⎡​RGB​⎦⎤​=⎣⎡​3.240479−0.9692560.055648​−1.537151.875991−0.204043​−0.4985350.0415561.057311​⎦⎤​⋅⎣⎡​XYZ​⎦⎤​

🐶2.3 HSV色彩空间

HSV(Hue, Saturation, Value)是根据颜色的直观特性由A. R. Smith在1978年创建的一种颜色空间, 也称六角锥体模型(Hexcone Model)。HSV对用户来说是一种直观的颜色模型,这个模型中颜色的参数分别是:色调(H),饱和度(S),明度(V)。

HSV空间模型如下: 在这里插入图片描述   色调:色调与光谱中的主要光波长相关,色调用角度度量,取值范围为0°~360°,从红色开始按逆时针方向计算,红色为0°,绿色为120°,蓝色为240°。它们的补色是:黄色为60°,青色为180°,紫色为300°;

  饱和度:饱和度S表示颜色接近光谱色的程度。一种颜色,可以看成是某种光谱色与白色混合的结果。其中光谱色所占的比例愈大,颜色接近光谱色的程度就愈高,颜色的饱和度也就愈高。饱和度高,颜色则深而艳。光谱色的白光成分为0,饱和度达到最高。通常取值范围为0%~100%,值越大,颜色越饱和。

  明度:明度表示颜色明亮的程度,对于光源色,明度值与发光体的光亮度有关;对于物体色,此值和物体的透射比或反射比有关。通常取值范围为0%(黑)到100%(白)。

接下来我们介绍以下空间六棱锥: 在这里插入图片描述   H参数表示色彩信息,即所处的光谱颜色的位置。该参数用一角度量来表示,红、绿、蓝分别相隔120度。互补色分别相差180度。范围从0到360。

  纯度S为一比例值,范围从0到1,它表示成所选颜色的纯度和该颜色最大的纯度之间的比率。S=0时,只有灰度。

  V表示色彩的明亮程度,范围从0到1。有一点要注意:它和光强度之间并没有直接的联系。

🦄2.3.1 RGB转HSV

转换前提:需要先将RGB色彩空间的值转换到[0,1](各通道的像素值除以255),再进行处理。 V = m a x ( R , G , B ) V=max(R,G,B) V=max(R,G,B) S = { V − m i n ( R , G , B ) V V ≠ 0 0 e l s e S=\left\{ \begin{array}{rcl} \frac{V-min(R,G,B)}{V} & & {V\neq 0}\\ 0 & & {else} \end{array} \right. S={VV−min(R,G,B)​0​​V​=0else​ H = { 60 ( G − B ) V − m i n ( R , G , B ) V = R 120 + 60 ( B − R ) V − m i n ( R , G , B ) V = G 240 + 60 ( R − G ) V − m i n ( R , G , B ) V = B H=\left\{ \begin{array}{rcl} \frac{60(G-B)}{V-min(R,G,B)} & & {V=R}\\ 120+\frac{60(B-R)}{V-min(R,G,B)} & & {V=G}\\ 240+\frac{60(R-G)}{V-min(R,G,B)} & & {V=B} \end{array} \right. H=⎩⎪⎨⎪⎧​V−min(R,G,B)60(G−B)​120+V−min(R,G,B)60(B−R)​240+V−min(R,G,B)60(R−G)​​​V=RV=GV=B​ 注:计算过程中可能会出现H<0的情况,若发生,则需要对H进一步操作,过程如下: H = { H + 360 H < 0 H e l s e H=\left\{ \begin{array}{rcl} H+360 & & {H



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有