当前位置: 首页 > news >正文

OpenCV 02(色彩空间)

一、OpenCV的色彩空间

1.1 RGB和BGR

最常见的色彩空间就是RGB, 人眼也是基于RGB的色彩空间去分辨颜色的.

OpenCV默认使用的是BGR.

BGR和RGB色彩空间的区别在于图片在色彩通道上的排列顺序不同.

显示图片的时候需要注意适配图片的色彩空间和显示环境的色彩空间.比如传入的图片是BGR色彩空间, 显示环境是RBG空间, 就会出现颜色混乱的情况.

1.2 HSV, HSL和YUV

HSV

OpenCV用的最多的色彩空间是HSV.

- Hue: 色相, 即色彩, 如红色, 蓝色. 用角度度量,取值范围为0°~360°,从红色开始按逆时针方向计算,红色为0°,绿色为120°,蓝色为240°


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


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

为什么要使用HSV?

方便OpenCV做图像处理.比如根据hue的值就可以判断背景颜色.

HSL

HSL和HSV差不多.

- Hue: 色相

- Saturation: 饱和度

- Lightness: 亮度

HSL在顶部是纯白的, 不管是什么颜色.

HSV和HSL的区别:

YUV

**YUV**,是一种颜色编码方法。常使用在各个视频处理组件中。 YUV在对照片或视频编码时,考虑到人类的感知能力,允许降低色度的带宽。

“Y”表示明亮度(Luminance或Luma),也就是灰阶值,“U”和“V”表示的则是色度(Chrominance或Chroma),作用是描述影像色彩及饱和度,用于指定像素的颜色。

Y'UV的发明是由于彩色电视与黑白电视的过渡时期。

Y'UV最大的优点在于只需占用极少的带宽。

- 4:4:4表示完全取样。

- 4:2:2表示2:1的水平取样,垂直完全采样。

- 4:2:0表示2:1的水平取样,垂直2:1采样。

- 4:1:1表示4:1的水平取样,垂直完全采样。

1.3 色彩空间的转换

cvtColor(img, colorspace): 颜色转换的关键API

import cv2def callback(value):passcv2.namedWindow('color', cv2.WINDOW_NORMAL)
cv2.resizeWindow('mouse', 640, 480)img = cv2.imread('./cat.jpeg')# 常见的颜色空间转换
colorspaces = [cv2.COLOR_BGR2RGBA, cv2.COLOR_BGR2BGRA, cv2.COLOR_BGR2GRAY, cv2.COLOR_BGR2HSV, cv2.COLOR_BGR2YUV]
cv2.createTrackbar('curcolor', 'color', 0, 4, callback)while True:index = cv2.getTrackbarPos('curcolor', 'color')#颜色空间转换APIcvt_img = cv2.cvtColor(img, colorspaces[index])cv2.imshow('color', cvt_img)key = cv2.waitKey(10)if key & 0xFF == ord('q'):breakcv2.destroyAllWindows()

http://www.lryc.cn/news/160175.html

相关文章:

  • 【动手学深度学习】--循环神经网络
  • 快捷支付是什么?怎么申请支付接口?
  • 【MySQL】数据库基础知识
  • 算法训练day36|贪心算法 part05(重叠区间三连击:LeetCode435. 无重叠区间763.划分字母区间56. 合并区间)
  • [Android] AndroidManifest.xml 详解
  • idea远程debug调试
  • 离散化,树状数组,P5459 [BJOI2016] 回转寿司
  • 论文复现--VideoTo3dPoseAndBvh(视频转BVH和3D关键点开源项目)
  • JS 检查某个值是否为某个类的实例
  • 生动理解深度学习精度提升利器——测试时增强(TTA)
  • Redis基础知识(四):使用redis-cli命令测试状态
  • 【web开发】4、JavaScript与jQuery
  • 关于el-date-picker组件修改输入框以及下拉框的样式
  • JSCPC f ( 期望dp
  • Django(10)-项目实战-对发布会管理系统进行测试并获取测试覆盖率
  • ABB机器人10106故障报警(维修时间提醒)的处理方法
  • 性能测试 —— 吞吐量和并发量的关系? 有什么区别?
  • Fastjson反序列化漏洞
  • AI 帮我写代码——Amazon CodeWhisperer 初体验
  • 实训笔记9.1
  • 汽车SOA架构
  • L1-017 到底有多二 C++解法
  • motionface respeak视频一键对口型
  • LeetCode——顺时针打印矩形
  • C语言课程作业
  • Yolov8魔术师:卷积变体大作战,涨点创新对比实验,提供CVPR2023、ICCV2023等改进方案
  • 基于小波神经网络的空气质量预测,基于小波神经网络的PM2.5预测,基于ANN的PM2.5预测
  • Vue / Vue CLI / Vue Router / Vuex / Element UI
  • Lesson4-2:OpenCV图像特征提取与描述---Harris和Shi-Tomas算法
  • 华为云云耀云服务器L实例评测|部署spring项目端口开放问题的解决 服务器项目环境搭建MySQL,Redis,Minio...指南