文章目录

  • RGB
  • HSV
  • HSL
  • 接口文档
  • 颜色空间转换
  • 视频中特定颜色物体追踪
  • 小结

RGB

RGB是从颜色发光的原理来设计定的,通俗点说它的颜色混合方式就好像有红、绿、蓝三盏灯,当它们的光相互叠合的时候,色彩相混,而亮度却等于两者亮度之总和,越混合亮度越高,即加法混合。

HSV

HSV是一种比较直观的颜色模型,所以在许多图像编辑工具中应用比较广泛,这个模型中颜色的参数分别是:色调(H, Hue),饱和度(S,Saturation),明度(V, Value)。

  • 色调H

用角度度量,取值范围为0°~360°,从红色开始按逆时针方向计算,红色为0°,绿色为120°,蓝色为240°。它们的补色是:黄色为60°,青色为180°,品红为300°;

  • 饱和度S

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

  • 明度V

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

HSL

HSL是一种将RGB色彩模型中的点在圆柱坐标系中的表示法。这两种表示法试图做到比基于笛卡尔坐标系的几何结构RGB更加直观。
HSL即色相、饱和度、亮度(英语:Hue, Saturation, Lightness)。
色相(H)是色彩的基本属性,就是平常所说的颜色名称,如红色、黄色等。
饱和度(S)是指色彩的纯度,越高色彩越纯,低则逐渐变灰,取0-100%的数值。
明度(V),亮度(L),取0-100%。

接口文档

  • cv2.cvtColor()
  • cv2.inRange()
  • cv2.bitwise_and()

颜色空间转换

COLOR_BGR2GRAY表示BGR→Gray

颜色转换其实是数学运算,如灰度化最常用的是:gray=R0.299+G0.587+B*0.114。

import cv2
img = cv2.imread('lena.jpg')
# 转换为灰度图
img_gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)cv2.imshow('img', img)
cv2.imshow('gray', img_gray)
cv2.waitKey(0)

这个代码可以显示所有的颜色转换方法

flags = [i for i in dir(cv2) if i.startswith('COLOR_')]print(flags)

视频中特定颜色物体追踪

HSV是一个常用于颜色识别的模型,相比BGR更易区分颜色,转换模式用COLOR_BGR2HSV表示

OpenCV中色调H范围为[0,179],饱和度S是[0,255],明度V是[0,255]。虽然H的理论数值是0°~360°,但8位>图像像素点的最大值是255,所以OpenCV中除以了2,某些软件可能使用不同的尺度表示,所以同其他软件>混用时,记得归一化。

import numpy as np
import cv2#BGR->HSV值
blue = np.uint8([[[255, 0, 0]]])
hsv_blue = cv2.cvtColor(blue, cv2.COLOR_BGR2HSV)
print(hsv_blue)  # [[[120 255 255]]]capture = cv2.VideoCapture("wzry.mp4")# 蓝色的范围,不同光照条件下不一样,可灵活调整
lower_blue = np.array([100, 110, 110])
upper_blue = np.array([130, 255, 255])while(True):# 1.捕获视频中的一帧ret, frame = capture.read()if False == ret:break# 2.从BGR转换到HSVhsv = cv2.cvtColor(frame, cv2.COLOR_BGR2HSV)# 3.inRange():介于lower/upper之间的为白色,其余黑色mask = cv2.inRange(hsv, lower_blue, upper_blue)# 4.只保留原图中的蓝色部分res = cv2.bitwise_and(frame, frame, mask=mask)cv2.imshow('frame', frame)cv2.imshow('mask', mask)cv2.imshow('res', res)if cv2.waitKey(1) == ord('q'):break

小结

  • cv2.cvtColor()函数用来进行颜色空间转换,常用BGR↔Gray,BGR↔HSV。
  • HSV颜色模型常用于颜色识别。要想知道某种颜色在HSV下的值,可以将它的BGR值用cvtColor()转换得到。

(ง •_•)ง[Python3 OpenCV4]4.颜色转换相关推荐

  1. python123温度转换答案_[Python3 练习] 002 温度转换2

    题目:温度转换 II (1) 描述 温度的刻画有两个不同体系:摄氏度 (Celsius) 和华氏度 (Fabrenheit) 请编写程序将用户输入的华氏度转换为摄氏度,或将输入的摄氏度转换为华氏度 转 ...

  2. (ง •_•)ง[Python3 OpenCV4]10.平滑图像

    文章目录 关于滤波和模糊: 均值滤波 方框滤波 高斯滤波 中值滤波 双边滤波 总结 关于滤波和模糊: 它们都属于卷积,不同滤波方法之间只是卷积核不同(对线性滤波而言) 低通滤波器是模糊,高通滤波器是锐 ...

  3. python颜色函数_颜色空间及cv2.cvtColor 转换函数

    图像处理时,有些图像可能在 RGB 颜色空间信息不如转换到其它颜色空间更清晰. 这里整理下关于颜色空间的知识,以及 python-opencv 的实现. 图像处理中有多种色彩空间,例如 RGB.HLS ...

  4. [JS] HEX颜色转换成RGBA

    写了一个函数,可以把hex格式的颜色转为rgba的格式 实际上不是颜色转换,主要是slice()函数的使用吧,当成字符串理解就好. function change(hex) {if (hex.leng ...

  5. 使用Python和OpenCV在图像之间执行超快速的颜色转换

    使用Python和OpenCV在图像之间执行超快速的颜色转换 1. 效果图 2. 原理 2.1 颜色转移算法 2.2 步骤 2.3 算法改进 3. 源码 参考 这篇博客将介绍如何使用Python和Op ...

  6. android md风格Switch,带有图标动画和颜色转换的Switch – material...

    Material Animated Switch 一个MD风格的Switch,带有图标动画和颜色转换. 如何使用 默认情况下显示收件箱锁定开关 android:id="@+id/pin&qu ...

  7. c语言提取颜色,C语言颜色转换宏

    C语言颜色转换宏 #define COLOR_BPP16_RGB555 /* Win RGB */ #define COLOR_RGB(r,g,b) ((COLORREF)(((BYTE)(r)|(( ...

  8. 计算机中的颜色XIII——颜色转换的快速计算公式

    本文的公式的基础都是在前文的基础上的.详情请参看前文: 计算机中的颜色I--颜色概述 计算机中的颜色II--VB2005中的Color结构 计算机中的颜色III--HSV表示方法 计算机中的颜色IV- ...

  9. DCMTK:测试dcmiod的颜色转换功能

    DCMTK:测试dcmiod的颜色转换功能 测试dcmiod的颜色转换功能 测试dcmiod的颜色转换功能 #include "dcmtk/config/osconfig.h" # ...

最新文章

  1. MyBatis 的这些坑你有踩过吗?
  2. java定时器结合springboot_SpringBoot开发案例之整合定时任务(Scheduled)
  3. linux关于防火墙的一些知识
  4. 小bat大装逼(▼へ▼メ)
  5. Android Studio最全插件整理
  6. LibAOM与AV1的最新研发进展
  7. Dr. Evil Underscores(异或最大值最小)
  8. HttpClient 4 API –获取状态代码-getStatusLine()。getStatusCode()示例
  9. Matplotlib 中文用户指南 4.3 文本属性及布局
  10. 麒麟810加持,华为nova 5z让你一步从青铜变王者
  11. (1)数据结构-绪论
  12. 手机无法服务器获取信息,荒野行动获取服务器信息一直不动怎么办 获取服务器信息为0解决方法...
  13. 【官方教程】ChatGLM-6B 微调,最低只需 7GB 显存
  14. 用Web标准进行开发
  15. zedgraph绘图(修改)
  16. 科技节编程大赛三等奖作品——李白杨
  17. 石河子大学师生为荣获2018年“马云乡村教师奖”校友点赞
  18. java计算机毕业设计web硕士研究生招生考试专业报考查询及学习系统设计与实现MyBatis+系统+LW文档+源码+调试部署
  19. VB socket编程入门
  20. 惠普ENVY13笔记本怎么U盘重装Win10系统教学

热门文章

  1. Vue Injector组件库易于维护和例行测试
  2. 股票量化指标怎么分析?
  3. 用计算机怎么弹刺客,Hitman Sniper上刺客攻略
  4. elif在python中啥意思_python中的elif是什么意思
  5. 大型园区的电子签章应用场景:“6类”特色业务实现在线签署
  6. 图形学 Lecture 2 Transformation(变换)
  7. 浏览器页面内容无法复制粘贴?解决办法
  8. nodejs+python+php+vue小学口算题测试系统
  9. 一文搞懂BN的原理及其实现过程(Batch Normalization)
  10. echart中x轴数据过多时展示不全