『opencv-江南app体育官方入口

点赞 关注 收藏 = 学会了

在计算机图像处理中,色彩空间是理解和操作图像色彩的重要基础。每一种色彩空间都有自己的适用范围。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个参数。

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

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

『opencv-python』色彩空间及色彩转换

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()

点赞 关注 收藏 = 学会了

本作品采用《cc 协议》,转载必须注明作者和本文链接
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!
网站地图