首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >『OpenCV-Python』色彩空间及色彩转换

『OpenCV-Python』色彩空间及色彩转换

作者头像
德育处主任
发布于 2026-11-10 08:44:02
发布于 2026-11-10 08:44:02
200
举报

点赞 + 关注 + 收藏 = 学会了

在计算机图像处理中,色彩空间是理解和操作图像色彩的重要基础。每一种色彩空间都有自己的适用范围。RGB 是比较常见的色彩空间,除此之外比较常见的色彩空间还有 GRAY、HSV、Lab、YUV 等。

为什么会有这么多色彩空间呢?有兼容性的原因,也有为了方便计算的原因。比如 YUV 这个是电视信号系统采用的,以前的老电视是黑白电视,只需要一个颜色通道,后来出现了彩色电视,为了使视频信号能够兼容黑白电视和彩色电视,就将 RGB 专横 YUV,其中 Y通道 是图像的亮度,黑白电视只需要使用这个通道就能显示出黑白影像了,而彩色电视需要将 YUV 转成 RGB 来显示。

我们都知道 RGB 表示「红绿蓝」三种颜色,一个像素包含 RGB 3个通道,将这3个通道融合可以渲染出不同的颜色。但 RGB 三个通道融合的值很难去直观看出到底是什么颜色。如果要做一个抠图功能,显然用 HSV(H色相、S饱和度、V明度) 会更合适。

所以就出现了这么多种色彩空间。

色彩空间转换方法

有时为了计算方便,会将图片的颜色空间转换成别的类型。

OpenCV 提供了 cv2.cvtColor() 方法可以实现不同色彩空间之间的转换。例如,将 RGB 转换为 HSV、LAB 或 YUV,或者反向转换,都可以通过该函数实现。

常见的色彩空间转换
  • cv2.COLOR_BGR2RGB:BGR 转 RGB
  • cv2.COLOR_BGR2HSV:BGR 转 HSV
  • cv2.COLOR_BGR2LAB:BGR 转 LAB
  • cv2.COLOR_BGR2YUV:BGR 转 YUV
  • cv2.COLOR_RGB2BGR:RGB 转 BGR
  • cv2.COLOR_HSV2BGR:HSV 转 BGR
  • cv2.COLOR_BGR2GRAY:RGB 转 GRAY

在 OpenCV 中,图像的默认色彩空间通常是 BGR(蓝、绿、红),与 RGB 的差别仅在于通道顺序。

cv2.cvtColor() 接收3个参数。

代码语言:javascript
复制
cv2.cvtColor(src, code[, dstCn]) -> dst
  • src:要处理的图像。
  • code:色彩空间转换代码,比如 cv2.COLOR_BGR2HSV 。
  • dstCn:目标通道数,可选。如果要指定通道数,这个值必须是整数。

举个例子,将一张 RGB 的图片转成灰度图(GRAY)。

01.png
01.png
代码语言:javascript
复制
import cv2

# 读取图像
image = cv2.imread("example.png")  # 替换为图像的路径

# 将 BGR 转换为灰度图
grayImg = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)

# 展示原图
cv2.imshow("Image", image)
# 展示灰度图
cv2.imshow("GrayImg", grayImg)

cv2.waitKey(0)
cv2.destroyAllWindows()

76.gif
76.gif

点赞 + 关注 + 收藏 = 学会了

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-11-18,如有侵权请联系 cloudcommunity@tencent.com 删除
目录
  • 色彩空间转换方法
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档