• 本文简单介绍了几个常见的色彩空间转换;
  • 因为HSV应用非常广泛,所以单独介绍其强大的功能;

本文用到的两个原始图像,如下图所示:

目录

一、Opencv色彩空间(GRAY、XYZ、HSV、YCrCb、HLS)

(1)GRAY色彩空间

(2)XYZ色彩空间

(3)HSV色彩空间

(4)YCrCb色彩空间

(5)HLS色彩空间

(6)代码实现:

二、利用HSV标记指定的颜色(涉及的三个知识点如下)

(1)通过inRange函数锁定特定

(2)通过基于掩码的按位与显示ROI

(3)显示特定颜色值

(4)综上所述,编写代码如下:


一、Opencv色彩空间(GRAY、XYZ、HSV、YCrCb、HLS)

(1)GRAY色彩空间

GRAY(灰度图像)通常指 8 位灰度图,其具有 256 个灰度级,像素值的范围是[0,255]。

(2)XYZ色彩空间

XYZ 色彩空间是由 CIE(International Commission on Illumination)定义的,是一种更便于计算的色彩空间,它可以与 RGB 色彩空间相互转换。

(3)HSV色彩空间

RGB 是从硬件的角度提出的颜色模型,在与人眼匹配的过程中可能存在一定的差异,HSV 色彩空间是一种面向视觉感知的颜色模型。HSV 色彩空间从心理学和视觉的角度出发,指出人眼的色彩知觉主要包含三要素:色调(Hue,也称为色相)、饱和度(Saturation)、亮度(Value), 色调指光的颜色,饱和度是指色彩的深浅程度,亮度指人眼感受到的光的明暗程度。

(4)YCrCb色彩空间

人眼视觉系统(HVS,Human Visual System)对颜色的敏感度要低于对亮度的敏感度。在传统的 RGB 色彩空间内,RGB 三原色具有相同的重要性,但是忽略了亮度信息。

在 YCrCb 色彩空间中,Y 代表光源的亮度,色度信息保存在 Cr 和 Cb 中,其中,Cr 表示 红色分量信息,Cb 表示蓝色分量信息。 亮度给出了颜色亮或暗的程度信息,该信息可以通过照明中强度成分的加权和来计算。在 RGB 光源中,绿色分量的影响最大,蓝色分量的影响最小。

(5)HLS色彩空间

HLS 色彩空间包含的三要素是色调 H(Hue)、光亮度/明度 L(Lightness)、饱和度 S (Saturation)。 与 HSV 色彩空间类似,只是 HLS 色彩空间用“光亮度/明度 L(lightness)”替换了“亮度 (Value)”。

(6)代码实现:

import cv2
import numpy as npsrc = cv2.imread("bulldog.jpg")
src = cv2.resize(src, (int(src.shape[1] / 2), int(src.shape[0] / 2)))GRAY = cv2.cvtColor(src, cv2.COLOR_BGR2GRAY)
XYZ = cv2.cvtColor(src, cv2.COLOR_BGR2XYZ)
YCrCb = cv2.cvtColor(src, cv2.COLOR_BGR2YCrCb)
HSV = cv2.cvtColor(src, cv2.COLOR_BGR2HSV)
HLS = cv2.cvtColor(src, cv2.COLOR_BGR2HLS)cv2.imshow("src", src)
cv2.imshow("GRAY", GRAY)
cv2.imshow("XYZ", XYZ)
cv2.imshow("YCrCb", YCrCb)
cv2.imshow("HSV", HSV)
cv2.imshow("HLS", HLS)
cv2.waitKey(0)
cv2.destroyAllWindows()

二、利用HSV标记指定的颜色(涉及的三个知识点如下)

(1)通过inRange函数锁定特定

OpenCV 中通过函数 cv2.inRange()来判断图像内像素点的像素值是否在指定的范围内,其语法格式为:

dst = cv2.inRange( src, lowerb, upperb )

式中:

  • dst 表示输出结果,大小和 src 一致。
  • src 表示要检查的数组或图像。
  • lowerb 表示范围下界。
  • upperb 表示范围上界。

返回值 dst 与 src 等大小,其值取决于 src 中对应位置上的值是否处于区间[lowerb,upperb] 内:

  • 如果 src 值处于该指定区间内,则 dst 中对应位置上的值为 255。
  • 如果 src 值不处于该指定区间内,则 dst 中对应位置上的值为 0。

(2)通过基于掩码的按位与显示ROI

正常显示某个图像内的感兴趣区域(ROI),而将其余区域显示为黑色。其语法格式为:

roi=cv2.bitwise_and(img,img, mask= mask)

通过 mask 设置了两个感兴趣区域(掩模)。后续通过在按位与运算中设置掩模的方式,将原始图像 img 内这两部分的值保留显示,而将其余部分的值置零。

(3)显示特定颜色值

各种颜色值的范围为:

  • 蓝色:值分布在[110,100,100]和[130,255,255]之间。
  • 绿色:值分布在[50,100,100]和[70,255,255]之间。
  • 红色:值分布在[0,100,100]和[10,255,255]之间。

(4)综上所述,编写代码如下:

首先利用函数 cv2.inRange()查找指定颜色区域,

然后利用基于掩码的按位与运算将指定颜色提取出来。

src = cv2.imread("RGB.jpg")
HSV = cv2.cvtColor(src, cv2.COLOR_BGR2HSV)# 确定蓝色、绿色、红色区域
minBlue = np.array([110, 50, 50])
maxBlue = np.array([130, 255, 255])
minGreen = np.array([50, 50, 50])
maxGreen = np.array([70, 255, 255])
minRed = np.array([0, 50, 50])
maxRed = np.array([30, 255, 255])# 通过掩码控制的按位与运算,锁定蓝色、绿色、红色区域
mask = cv2.inRange(HSV, minBlue, maxBlue)
blue = cv2.bitwise_and(src, src, mask=mask)
mask = cv2.inRange(HSV, minGreen, maxGreen)
green = cv2.bitwise_and(src, src, mask=mask)
mask = cv2.inRange(HSV, minRed, maxRed)
red = cv2.bitwise_and(src, src, mask=mask)# 展示各个标记指定的颜色图像
cv2.imshow('blue', blue)
cv2.imshow('green', green)
cv2.imshow('red', red)
cv2.waitKey(0)
cv2.destroyAllWindows()

>>>输出图像,如下图所示:

   >>>如有疑问,欢迎评论区一起探讨

Opencv色彩空间(GRAY、XYZ、HSV、YCrCb、HLS)展示,以及利用HSV标记指定的颜色相关推荐

  1. 树莓派视觉小车 -- 小球追踪(颜色追踪)(OpenCV色彩空间HSV)

    目录 效果展示 基础理论(HSV) 为什么用HSV空间而不是RGB空间? HSV 1.Hue(色相) 2.Value(明度) 3.Saturation(饱和度) 一.初始化 滑动条初始化 1.创建回调 ...

  2. CV — 色彩空间:RGB、HSV、HLS

    文章目录 CV - 色彩空间:RGB.HSV.HLS 一. RGB (一) RGB 颜色系统 二.HSV (一) HSV颜色模型 (二) 代码案例 1. HSV 值进行目标物体的提取 2. 使用 HS ...

  3. OpenCV实战(7)——OpenCV色彩空间转换

    OpenCV实战(7)--OpenCV色彩空间转换 0. 前言 1. RGB 色彩空间 2. 色彩空间转换 2.1 CIE L*a*b* 色彩空间 2.2 其它色彩空间 3. 用色调.饱和度和亮度表示 ...

  4. opencv色彩空间类型转换(python)

    色彩空间类型转换 色彩空间类型转换 色彩空间基础 GRAY色彩空间 XYZ色彩空间 YCrCb色彩空间 HSV色彩空间 HLS色彩空间 CIEL*a*b*色彩空间 CIEL*u*v*色彩空间 Baye ...

  5. python怎么编写视觉识别_Python视觉识别--OpenCV色彩空间\图像运算\ROI(四)

    (七) 色彩空间 什么是色彩空间,人们建立了多种色彩模型,以一维.二维.三维甚至四维空间坐标来表示某一色彩,这种坐标系统所能定义的色彩范围即色彩空间 色彩空间有很多,但是常用的色彩空间一共5种:RGB ...

  6. 05 OpenCV色彩空间处理

    色彩空间(Color Space)是一种用于描述颜色的数学模型,它将颜色表示为多维向量或坐标,通常由三个或四个独立的分量来表示.不同的色彩空间在颜色的表示方式.可表达颜色的范围.计算速度和应用场景等方 ...

  7. OpenCV 色彩空间的改变

    OpenCV中有150多种颜色空间转换方法.最广泛使用的转换方法有两种,BGR与Gray之间的转换和BGR与HSV之间的转换. cv.cvtColor(input_image, flag) input ...

  8. openCV色彩空间转换

    RGB 人眼的色彩空间 BGR opencv默认使用的色彩空间 他们的最大差别是R,B排列顺序不一样,若是把RGB直接放入opencv系统中会造成颜色有差异. 给opencv的数据是要BGR的,电脑内 ...

  9. hsv空间阈值检测matlab,基于HSV色彩空间变换的阴影检测算法——MATLAB实现

    图像在不同的色彩空间可以表现出不同的光谱特性,从而适用于不同的应用场合.在 HSV 色彩空间中,阴影在色度和饱和度通道中都与非阴影区域有明显的区别.根据阴影的这种特性,利用连续两次的 HSV 彩色空间 ...

最新文章

  1. 微生物领域非顶级期刊概述
  2. hbase 修改表名_HBase学习——2.HBase原理
  3. 「MICCAI 2016」Reading Note
  4. AIoT成功的关键要素
  5. 一文带你认识keepalived,再带你通关LVS+Keepalived!
  6. 发动机压缩比怎么计算公式_怎么判断发动机有积碳,发动机积碳多的症状有哪些...
  7. Cortex-M0(5)---Cortex-M0【中断向量表】【中断控制和系统控制
  8. 机器学习基于语义特征的情感分析
  9. android自动化必备之界面元素
  10. mysql insert on update_我可以始终使用INSERT…ON DUPLICATE UPDATE进行简单的更新/插入吗?...
  11. 阿里图标库——批量下载图标
  12. 成功在中东和北非地区发布应用或游戏的 7 个技巧
  13. NXP智能车竞赛笔记(室外电磁组)
  14. php 模拟登陆微信,PHP微信模拟登陆并给用户发送消息的方法
  15. java:AXIS调用webService接口,返回String类型xml,并用dom4j简单解析xml
  16. buuctf web warmup详细题解
  17. 华为2022硬件逻辑笔试题
  18. UTF8 To GBK 转换程序
  19. 日期格式之间的互相转换
  20. 微信登陆的LOL只有一个服务器,LOL:新功能!部分大区开放了微信登录功能,网友:有啥用?...

热门文章

  1. (,)的用法逗号表达式
  2. 服务器ssh升级导致的java程序ssh连接失败
  3. Eclipse插件配置
  4. int和integer
  5. 学生管理系统(大数据实验室)
  6. MySQL 官网下载地址
  7. Java项目专栏之数据库建表
  8. C++实现的BP神经网络(代码与详解)
  9. OPEN(SAP) UI5 学习入门系列之二: 最佳实践练习(下)
  10. 通信协议之IIC协议(eeprom)_通俗易懂篇!