检测视频中特定颜色

简要描述

这章是检测视频中的特定颜色,代码中检测的是蓝色的。经尝试可用。

步骤

● 设置“蓝色”HSV范围
● BGR转HSV
● 捕获摄像头视频
● 获取蓝色部分mask
● 图像按位与操作
● 显示蓝色部分图像

知识点

HSV(Hue , Saturation , Value):色调,饱和度,明度
色度H:用角度度量,取值范围为0~360,红色开始按逆时针方向计算,红色为0度,绿色为120度,蓝色为240度
饱和度S:接近光谱色的程度,颜色可以看成是光谱色与白色混合结果,光谱色占的比例愈大,颜色接近光谱色的程度越高,颜色饱和度就越高。光谱色中白色成分为0,饱和度达到最高,取值范围0%~100%,值越大,颜色越饱和
明度V:表示颜色明亮的程度,对于光源色,明度值与发光体的光亮度有关;对于物体色,与物体的透射比有关,取值 范围为0%(黑)~100%(白)
RGB面向硬件,HSV面向用户
在Opencv中 ,H色度取值范围是[0,179] ,S饱和度的取值范围是[0,255] ,V明度的取值范围是[0,255]
拿opencv的HSV值与其他软件的HSV值进行对比时,要归一化

主要函数

BGR转HSV:cv2.cvtColor(frame,cv2.COLOR_BGR2HSV)

获取蓝色部分mask:mask = cv2.inRange(hsv,lower_blue,upper_blue)

图像按位与操作:res = cv2.bitwise_and(frame,frame,mask=mask)

代码

import cv2
import numpy as np

cap = cv2.VideoCapture(0)

#画出蓝色的范围
lower_blue = np.array([78,43,46])
upper_blue = np.array([110,255,255])

while(1):
    ret,frame = cap.read()
    cv2.imshow("capture",frame)

    #转换成hsv
    hsv = cv2.cvtColor(frame,cv2.COLOR_BGR2HSV)
    cv2.imshow("HSV",hsv)

    ''''' 
            cv2.inRange(src , lowerb , upperb[,dst]) 
            作用:更改函数对某个单通道中的元素检查其值是否在范围中 
            src:输入数组,lowerb:包含低边界的数组,upperb:包含高边界的数组,dst:输出数组 
            如果src(I)符合范围,则dst(I)被设置为255,也就是说dst返回的是非黑即白的图像,而且符合要求 
             的部分是白色的 
            '''
    # 构建物体掩膜(黑白部分),注意这里要使用hsv
    mask = cv2.inRange(hsv,lower_blue,upper_blue)
    cv2.imshow("MASK",mask)

    #对原图像和掩膜进行位运算
    res = cv2.bitwise_and(frame,frame,mask=mask)
    cv2.imshow("result",res)

    if cv2.waitKey(1) & 0xFF == ord('q'):
        break

cap.release()
cv2.destroyAllWindows()

参考:
【1】http://blog.csdn.net/huanglu_thu13/article/details/52346578#15-python-opencv-检测特定颜色
【2】http://blog.csdn.net/qingyuanluofeng/article/details/51582137

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值