Opencv如何找到要跟踪对象的HSV值?

我们趁热打铁,继续昨天的内容。昨天我们了解了如何追踪特定颜色的物体,不过该如何才能知道跟踪对象的HSV值呢?

我们首先来介绍下HSV(在opencv中):

H:表示    色彩/色度    取值范围是    [0,179]

S: 表示    饱和度          取值范围是    [0,255]

V: 表示     亮度             取值范围是    [0,255]

如果我们知道某一对象的HSV值,首先要知道他的BGR值

(-BGR值是怎么来的啊?

-BGR我们学过通道的拆分与合并啊,

等等!BGR值怎么来的?!不知道BGR这个图你是怎么画出来的啊!

– 。。。)

转换BGR与HSV的函数是

cv2.cvtColor()

我们上一章讲过这个,下面着重来说下参数

因为是BGR转换成BGR,所以必然会有一个cv2.COLOR_BGR2HSV

自然会有一个给BGR定义的变量,就是    起个名   写出BGR值   就好啦

例如我们要定义绿色的BGR,我们可以这样写

  • green = np.uint8([[[0,0,255]]])

这里我们为什么要用这么多的括号呢?

这里的三层括号别对应cvArray,cvMat,IplImage(这里我们不多介绍这三个参数,只需要记住转换时千万要加三个括号!)

下面写一下代码

 

# -*- coding:utf-8 -*-
"""
Created on Feb Feb 3 大年初七 15:34:07 2017

@author: Y

"""

import cv2
import numpy as np

green = np.uint8([[[0,255,0]]])
hsv_green = cv2.cvtColor(green,cv2.COLOR_BGR2HSV)

blue = np.uint8([[[0,0,255]]])
hsv_blue = cv2.cvtColor(blue,cv2.COLOR_BGR2HSV)

red = np.uint8([[[255,0,0]]])
hsv_red = cv2.cvtColor(red,cv2.COLOR_BGR2HSV)

yellow = np.uint8([[[0,255,255]]])
hsv_yellow = cv2.cvtColor(yellow,cv2.COLOR_BGR2HSV)

print hsv_green

print hsv_blue

print hsv_red

print hsv_yellow

好啦,看下具体的结果吧

这就是BGR转HSV的结果啦~

昨天说的蓝色的上下阈值有没有一点理解啦?

在HSV中我们明确了H S V到底是什么,也了解了BGR与HSV转换后的结果,比对发现HSV与BGR在数值上不一样,所以一定要记住这个不同空间上的数值是不同含义的。

在HSV中的蓝色阈值是[110,50,50]~[130,255,255]

就知道是色彩110~130,

饱和度50~255

亮度50~255

我们知道了蓝色的HSV值是[[[0,255,255]]],

怎么才知道蓝色的BGR呢?虽然我们已经知道了-。-

但我的意思是如果不是蓝色的阈值呢?是别的什么颜色的阈值呢?

如何把HSV转换成BGR呢?

 

这些问题留到以后慢慢解决,我们一步步来就好。我是Y,欢迎大家来我的博客参观留言转发分享,今天的内容不多,希望大家好好努力,共同实现梦想!拜拜~