OpenCV 学习笔记 (九)—— 改变色彩空间

改变色彩空间

  • 本节的主要任务是学会如何使用 OpenCV 来改变图片的色彩空间。

一. 学习目标

  • 学习怎么从一个色彩空间转换到另一个色彩空间,向从 BGR ↔ \leftrightarrow Gray ,BGR ↔ \leftrightarrow RGB ,BGR ↔ \leftrightarrow HSV 等。
  • 编写一个应用程序用来提取视频中的 彩色对象
  • 学习函数:cv.cvtColor(), cv.inRange() 等。

二. 改变色彩空间

  • 在 OpenCV 中,超过 150 多种色彩空间可以相互转换。但是,我们今天只讲两种最常用的色彩空间转换,BGR ↔ \leftrightarrow Gray 以及 BGR ↔ \leftrightarrow HSV
  • 在 OpenCV 中,使用 cv.cvtColor(input_image, flag) 函数来实现色彩空间转换。其中 flag 决定转换的类型。
  • 我们可以通过以下方式来查看所有的 flag :
    >>> import cv2 as cv
    >>> flag = [i for i in dir(cv) if i.startswith("COLOR_")]
    >>> print(flag)
    
  • 运行结果
    在这里插入图片描述
  • 从 BGR → \rightarrow Gray 转换的 flag 是 cv.COLOR_BGR2GRAY ,从 BGR → \rightarrow HSV 的 flag 是 cv.COLOR_BGR2HSV

三. 目标跟踪

  • 在学会 BGR → \rightarrow HSV 后,我们就可以使用它去提取色彩目标。相较于BGR,HSV 确定颜色会更容易。在此次的应用程序中,我们将会去捕捉蓝色目标。
  • 应用程序方法步骤:
    1. 提取视频中的每一帧;
    2. 将 BGR 色彩空间转换成 HSV 色彩空间;
    3. 在 HSV 图像中设定蓝色范围阈值;
    4. 提取蓝色物体。
  • 具体的代码演示:
    import cv2 as cv
    import numpy as np
    
    # 打开摄像头
    cap = cv.VideoCapture(0)
    
    while(1):
        # 提取每一帧
        _, frame = cap.read()
        # 色彩空间转换
        hsv = cv.cvtColor(frame, cv.COLOR_BGR2HSV)
        # 设定在 HSV 中蓝色的取值范围
        lower_blue = np.array([110,50,50])
        upper_blue = np.array([130,255,255])
        # 进行二值化处理
        mask = cv.inRange(hsv, lower_blue, upper_blue)
        # 按位运算,得到蓝色区域
        res = cv.bitwise_and(frame,frame, mask= mask)
        cv.imshow('frame',frame)
        cv.imshow('mask',mask)
        cv.imshow('res',res)
        k = cv.waitKey(5) & 0xFF
        if k == 27:
            break
    cv.destroyAllWindows()
    
  • 如果想提取其他的颜色,我们只需要改变取值范围就可以了。
  • 如果想了解更多关于 HSV 色彩空间的知识,可以观看这篇文章:OpenCV—HSV颜色空间介绍

四. 结语

  • 如果其中有不对的地方或是需要改进的地方,请指正。
  • 联系方式 email:lwl510ll@163.com 。
  • 本文到这就结束了,谢谢大家观看。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值