OpenCV-Python之色彩空间

24 篇文章 8 订阅
14 篇文章 1 订阅

1. 色彩空间转换API

常见的色彩空间:

  • RGB
  • HSV
  • YUV
  • YCbCr
    如下demo
import cv2 as cv

def converce_color_space(img):
    gray = cv.cvtColor(img, cv.COLOR_BGR2GRAY)
    cv.imshow('gray iamge', gray)
    hsv = cv.cvtColor(img, cv.COLOR_BGR2HSV)
    cv.imshow('hsv image', hsv)
    yuv = cv.cvtColor(img, cv.COLOR_BGR2YUV)
    cv.imshow('yuv image', yuv)
    YCbCr = cv.cvtColor(img, cv.COLOR_BGR2YCrCb)
    cv.imshow('YCbCr image', YCbCr)

image = cv.imread("./image/CR.jpg", 1)
converce_color_space(image)
cv.waitKey(0)
cv.destroyAllWindows()

显示图像为:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.inRange函数提取指定颜色

一般对颜色空间的图像进行有效处理都是在HSV空间进行的,然后对于基本色中对应的HSV分量需要给定一个严格的范围,下面是通过实验计算的模糊范围(准确的范围在网上都没有给出)。
此处把部分红色归为紫色范围:
在这里插入图片描述
下面演示视频demo,我们提取视频中的绿色部分:
在这里插入图片描述

import cv2 as cv
import numpy as np

def extrace_object():
    capture = cv.VideoCapture('./image/text.mp4')
    while(True):
        res, frame = capture.read()
        hsv = cv.cvtColor(frame, cv.COLOR_BGR2HSV)
        lower_hsv = np.array([35, 43, 46])
        upper_hsv = np.array([77, 255, 255])
        mask = cv.inRange(hsv, lowerb=lower_hsv, upperb=upper_hsv)
        if res == False:
            break
        # cv.imshow('Video', frame)
        cv.imshow('Mask', mask)
        c = cv.waitKey(40)
        if c == 27:
            break

extrace_object()

两个一维数组参考上面的表格,因为我们提取绿色,所以选绿色的哪一组数值.
在这里插入图片描述

图像的分离和合并

cv.split( )函数实现图像的分离
import cv2 as cv

image = cv.imread("./image/CR.jpg", 1)
b, g, r = cv.split(image)
cv.imshow('blue', b)
cv.imshow('green', g)
cv.imshow('red', r)
#image1 = cv.merge([b, g, r])
#image1[:, :, 2] = 122
cv.imshow('change image', image)
cv.waitKey(0)
cv.destroyAllWindows()

在这里插入图片描述

cv.merge( )函数用于合并图像的通道
import cv2 as cv

image = cv.imread("./image/CR.jpg", 1)
b, g, r = cv.split(image)
image1 = cv.merge([b, g, r])
image1[:, :, 2] = 122
cv.imshow('merge image', image1)
cv.waitKey(0)
cv.destroyAllWindows()

在这里插入图片描述

完~~~

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

量子孤岛

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值