Python+OpenCV学习(六)改变颜色空间

内容:

图像颜色空间的转换,例如:BGR图与灰度图转换,BGR图与HSV转换等。

除此之外,我们会创建一个提取物品颜色的视频处理程序。这包括cv.cvtColor(),cv.inRange()等函数。

改变颜色空间

最常用的颜色空间转变是: BGR图与灰度图转换,BGR图与HSV转换

我们用函数cv.cvtColor(input_image, flag)来进行颜色转换,flag决定转换的类型。

BGR转Gray用的flag是cv.COLOR_BGR2GRAY。BGR转HSV的flag是cv.COLOR_BGR2HSV。

 

物品追踪

现在我们知道如何将BGR图像转换成HSV,我们可以用它来提取有色物体。HSV模型比BGR模型更容易表征颜色空间。在我们的程序中,我们将尝试提取一个蓝色的物体。

l  提取视频的每一帧

l  把BGR模型转为HSV模型

l  设置HSV模型中蓝色的阈值

l  提取蓝色物体。

Demo:

# coding=utf-8
import cv2 as cv
import numpy as np
cap = cv.VideoCapture(0)
while(1):
    #提取视频的每一帧
   _, frame = cap.read()
    #把BGR转为HSV
   hsv = cv.cvtColor(frame, cv.COLOR_BGR2HSV)
    #定义蓝色在HSV模型中的范围
   lower_blue = np.array([100,50,50])
   upper_blue = np.array([130,255,255])
    #只提取HSV中的蓝色并二值化
   mask = cv.inRange(hsv, lower_blue, upper_blue)
    #原图像与mask图像按位与
   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
    ifk == 27:
       break
cv.destroyAllWindows()

取得HSV中的颜色值

可以用cv.cvtColor().函数很容易得到。不需要通过图像,可以通过BGR值来获得。例如提取HSV中的绿色值:

# coding=utf-8
import cv2 as cv
import numpy as np
green = np.uint8([[[0,255,0 ]]])
hsv_green =cv.cvtColor(green,cv.COLOR_BGR2HSV)
print( hsv_green )
# [[[ 60 255 255]]]

可以把[H-10,100, 100 ]和[H+ 10, 255, 255 ]分别作为下界和上界。

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值