OpenCV(十一):色彩空间转换

核心函数

python 复制代码
dst = cv2.cvtColor(src, code)

参数解释:

  1. src : 待转换的源图像(通常是一个 NumPy 数组)。
  2. code : 转换代码,指定了源色彩空间到目标色彩空间的转换类型。

常见的色彩空间转换代码(code):

转换代码 描述
cv2.COLOR_BGR2GRAY BGR 格式(OpenCV默认)转为灰度图
cv2.COLOR_BGR2RGB BGR 转为 RGB (常用于Matplotlib显示)
cv2.COLOR_RGB2BGR RGB 转为 BGR
cv2.COLOR_BGR2HSV BGR 转为 HSV (色相、饱和度、亮度)
cv2.COLOR_HSV2BGR HSV 转为 BGR
cv2.COLOR_BGR2HLS BGR 转为 HLS (色相、亮度、饱和度)

为什么常用 HSV/HLS?

HSV(Hue, Saturation, Value)和 HLS(Hue, Lightness, Saturation)色彩空间在基于颜色 的目标检测或分割中非常有用,因为它们将颜色信息 (色相 H)与亮度信息(V/L)分离。这意味着可以在不同光照条件下更容易地提取特定颜色。

示例

python 复制代码
import cv2
import numpy as np

# 窗口名称
WINDOW_NAME = 'HSV Color Palette'

# 这是一个空函数,作为 cv2.createTrackbar 的回调函数。
# trackbar 变化时,如果不需要立即执行操作,可以使用它。
def nothing(x):
    pass

# 1. 创建窗口
cv2.namedWindow(WINDOW_NAME)

# 2. 创建滑块 (Trackbars)

# HSV 在 OpenCV 中,默认的 8 位图像范围如下:
# H (Hue, 色相): 0 - 179 (范围是 0-360 的一半)
# S (Saturation, 饱和度): 0 - 255
# V (Value/Brightness, 明度/亮度): 0 - 255

cv2.createTrackbar('H', WINDOW_NAME, 0, 179, nothing)
cv2.createTrackbar('S', WINDOW_NAME, 0, 255, nothing)
cv2.createTrackbar('V', WINDOW_NAME, 0, 255, nothing)

# 3. 主循环:实时获取滑块位置并更新颜色显示
while(True):
    # 退出机制:按下 'q' 键退出
    k = cv2.waitKey(1) & 0xFF
    if k == ord('q'):
        break

    # 4. 获取当前滑块位置
    h = cv2.getTrackbarPos('H', WINDOW_NAME)
    s = cv2.getTrackbarPos('S', WINDOW_NAME)
    v = cv2.getTrackbarPos('V', WINDOW_NAME)

    # 5. 创建一个 HSV 颜色块
    # 注意:为了让 OpenCV 识别为颜色,必须使用三维数组结构:
    # [[[H, S, V]]] - (1, 1, 3) 的 NumPy 数组
    hsv_color = np.uint8([[[h, s, v]]])

    # 6. 将 HSV 颜色转换为 BGR 颜色
    # cv2.imshow 只能显示 BGR/GRAY 图像,所以需要转换回来
    bgr_color = cv2.cvtColor(hsv_color, cv2.COLOR_HSV2BGR)

    # 7. 创建一个大图像来显示这个颜色 (例如 300x512)
    # img[:] = bgr_color[0][0] 将图像的所有像素设置为转换后的 BGR 颜色
    img = np.zeros((300, 512, 3), dtype=np.uint8)
    img[:] = bgr_color[0][0]

    # 8. 显示图像
    cv2.imshow(WINDOW_NAME, img)

# 9. 销毁所有窗口
cv2.destroyAllWindows()
相关推荐
To_OC14 小时前
大模型蒸馏是啥?说白了就是大厨带徒弟的学问
人工智能·llm·agent
新手来了@click14 小时前
JAVA+AI 简化开发操作|文章被 AI Agent 技术社区收录分享
人工智能
GuWenyue15 小时前
Cursor黑盒拆解!1套LangChain.js手写Mini编程Agent,自动生成React项目,效率提升60%
前端·数据库·人工智能
GuWenyue15 小时前
传统Agent工具两大痛点!300行代码落地MCP跨语言工具,彻底解耦LLM与工具
前端·人工智能·算法
老云讲算力市场15 小时前
WAIC首日观察:国产算力与机器人加速落地,奇点算力迎来产业新机遇
人工智能·科技
糖果店的幽灵15 小时前
【DeepAgents 从入门到精通】Context Management 上下文管理
java·人工智能·后端·spring·中间件·langgraph·deepagents
小林ixn15 小时前
大模型随机说话的秘密:Temperature 和 Top K 深度解析,LangChain 实战调优
人工智能·langchain
ALINX技术博客15 小时前
ALINX 亮相 2026 WAIC 世界人工智能大会,展示 AI 视觉 FPGA+GPU 异构计算与电子后视镜解决方案
人工智能·ai·fpga·世界人工智能大会·电子后视镜
程序员老猫16 小时前
当 AI 能写 80% 的代码时,后端工程师的核心价值还剩什么?
人工智能
想会飞的蒲公英16 小时前
计算机怎样读取中文文本:编码、清洗与标准化
人工智能·python·自然语言处理