opencv学习之色彩提取与色彩空间

上篇文章我们说了有关色彩的问题,RGB只是一种色彩空间,除了它之外我们还有很多色彩空间,这篇重点说一下色彩空间的转换以及在hsv色彩空间中对于颜色的提取。我们先来看代码:

import cv2 as cv
import numpy as np

#建议先跳过这个函数去看下面的色彩空间转换函数,看完了再回过头看这个函数
def extrace_object_demo():#这个函数用来处理视频
    capture=cv.VideoCapture("1269942405.mp4")#首先我们读入了一个视频
    while(True):
        ret,frame=capture.read()#读这个视频的每一帧
        if ret==False:
            break
        hsv=cv.cvtColor(frame,cv.COLOR_BGR2HSV)#转换为hsv色彩空间
        lower_hsv=np.array([0,0,0])
        higher_hsv=np.array([180,255,46])
    #给定两组阈值,这两组阈值可以限制出一个颜色来,比如我这里限制的是黑色
        mask=cv.inRange(hsv,lowerb=lower_hsv,upperb=higher_hsv)
        #上面就用到了那两个阈值,我们根据这两个阈值划出了黑色
        cv.imshow("video",frame)#显示原图像
        cv.imshow("mask",mask)
        #显示出提取出黑色的图像,这里面原视频中黑色的部分会变成白色
        c=cv.waitKey(40)
        if c==27:
            break

def color_space_demo(image):
#opencv提供的api可以方便的进行色彩空间的转换
    gray=cv.cvtColor(image,cv.COLOR_BGR2GRAY)
    #变成灰度值图像,这个上篇中讲过
    cv.imshow("gray",gray)
    hsv=cv.cvtColor(image,cv.COLOR_BGR2HSV)
    #变成hsv图像
    cv.imshow("hsv",hsv)#H:0-180 S:0-255 V:0-255
    yuv=cv.cvtColor(image,cv.COLOR_BGR2YUV)
    #变成yuv图像
    cv.imshow("yuv",yuv)
    Ycrcb=cv.cvtColor(image,cv.COLOR_BGR2YCrCb)
    #变成YCrCb图像
    cv.imshow("Ycrcb",Ycrcb)

src=cv.imread(r"C:\Users\DELL\Desktop\TIM20180421221302.png")
cv.namedWindow("impot image",cv.WINDOW_AUTOSIZE)

b,g,r=cv.split(src)
cv.imshow("blue",b)
cv.imshow("green",g)
cv.imshow("red",r)#分割颜色,这个不是重点,要配合下面一起

src=cv.merge([b,g,r])#把颜色组合到一起
src[:,:,0]=0#给这一列赋值
cv.imshow("changed image",src)
#最终这里会得到一个根据上一行赋值不同而不同的图像

extrace_object_demo()#图像函数
#cv.imshow("input image",src)
cv.waitKey(0)

cv.destroyAllWindows()

代码就分析这么多,然后还有一点,就是上面的那个提取图像中的颜色,阈值是这样的:
在这里插入图片描述
也就是说我们只需要给出这个表上的阈值,就可以提取出相应的颜色,然后填的方式是那个lower里面就填min里面的,也就是填这一列中最小的三个,然后higher中填的就是这一列中最大的三个,其实也就是其他三个,但是要一一对应,就是这个min要对应它下面的max

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

许倾墨

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

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

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

打赏作者

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

抵扣说明:

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

余额充值