计算机视觉之浅析RGB/HSV与inRange函数

1.RGB色彩空间

RGB色彩空间源于使用阴极射线管的彩色电视,RGB分别代表三个基色(R-红色、G-绿色、B-蓝色),具体的色彩值由三个基色叠加而成。在图像处理中,我们往往使用向量表示色彩的值,如(0,0,0)表示黑色、(255, 255, 255)表示白色。其中,255表示色彩空间被量化成255个数,最高亮度值为255(255 = 2^8 - 1,即每个色彩通道用8位表示)。在这个色彩空间中,有256256256种颜色。

⚠️:

  • (红red 绿green 蓝blue)三原色:取值范围都是:[0,255],[0,255],[0,255]
  • 在OpenCV中,RGB色彩空间的顺序是B,G,R

2.HSV色彩空间

HSV色彩空间(Hue-色调、Saturation-饱和度、Value-明度)将亮度从色彩中分解出来,在图像增强算法中用途很广,将图像从RGB色彩空间转换到了HSV色彩空间,以便更好地感知图像颜色。

  • H (Hue)色相:取值范围 [0,180]
  • S (Saturation)饱和度,即色彩纯净度,0饱和度为白色; 取值范围:[0,255]
  • V (Value):明度 0明度为纯黑色;取值范围:[0,255]
    在这里插入图片描述

3.由RGB色彩空间转化为HSV色彩空间

OpenCV为我们提供了特殊的函数:cv2.cvtColor(src, cv2.COLOR_BGR2HSV),很方便的就可以将RGB色彩空间转化为HSV色彩空间。

import cv2
import numpy as np

# 读取图片
image = cv2.imread('test_pic.JPG')
cv2.namedWindow('BGR', cv2.WINDOW_NORMAL)
cv2.imshow("BGR", image)

# RGB转化到HSV
dst = cv2.cvtColor(image, cv2.COLOR_BGR2HSV)

# 根据HSV提取头发
low_hsv = np.array([0, 0, 0])        #根据上图中把黑色的最低值依次写入array中
high_hsv = np.array([180, 255, 46])  #根据上图中把黑色的最高值依次写入array中
dst = cv2.inRange(dst, low_hsv, high_hsv)
cv2.namedWindow('result', cv2.WINDOW_NORMAL)
cv2.imshow("result", dst)

cv2.waitKey(0)
cv2.destroyAllWindows()

在这里插入图片描述
左边是原图,右侧是过滤出来的黑色区域

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值