OpenCV-Python教程:10.更改颜色空间

目标:

·如何把图片从一个彩色空间转换到别的,比如BGR<->Gray, BGR<->HSV。

·在此之上,我们会创建一个应用把一个彩色的物体从视频里拿出来

·了解下列函数:cv2.cvtColor(), cv2.inRange()

变更色彩空间

在OpenCV里有超过150中色彩空间转换方法。但是我们只看看其中两种应用最广泛的,BGR<->Gray和BGR<->HSV。

对于色彩转换,我们使用函数cv2.cvtColor(input_image, flag),这里flag决定转换的类型。

对于BGR<->Gray转换我们使用标志位 cv2.COLOR_BGR2GRAY。而对BGR<->HSV来说类似,我们使用cv2.COLOR_BGR2HSV。要获得其他标志,在Python终端里执行下面的指令:

>>>import cv2
>>>flags = [i for i in dir(cv2) if i.startswith('COLOR_')]
>>>print flags

注意:
对于HSV, 色彩空间是[0, 179],饱和度空间是[0, 255]而值空间是[0, 255]。不同软件使用不同的标量。所以如果你要比较OpenCV的值你需要统一这些值域。

物体跟踪

现在我们知道如何去把BGR图片转换成HSV,我们可以用这个来分解出彩色物体。在HSV里,要表现一个颜色要比RGB空间要简单。在我们的应用里,我们会尝试分解出一个蓝色物体,这里是方法:

·从视频里取出每一帧

·把BGR转换到HSV

·我们在HSV图片里设置一个色彩阈值来过滤蓝色

·现在我们只把蓝色物体分解出来,我们可以对那个图片按自己的需要处理。

下面是代码:

import cv2
import numpy as np

cap = cv2.VideoCapture(0)

while(1):

    # Take each frame
    _,frame = cap.read()

    # Convert BGR to HSV
    hsv = cv2.cvtColor(frame,cv2.COLOR_BGR2HSV)

    # define range of blue color in HSV
    lower_blue = np.array([110,50,50])
    upper_blue = np.array([130,255,255])

    # Threshold the HSV image to get only blue colors
    mask = cv2.inRange(hsv,lower_blue,upper_blue)

    # Bitwise-AND mask and original image
    res = cv2.bitwise_and(frame,frame,mask=mask)

    cv2.imshow('frame',frame)
    cv2.imshow('mask',mask)
    cv2.imshow('res',res)
    k = cv2.waitKey(5) & 0xFF
    if k == 27:
        break

cv2.destroyAllWindows()

注意:


在图片里会有一些噪音。

注意:
这是最简单的物体跟踪的办法。当你学了其他轮廓线方法,你可以做很多事情了,比如找到这个物体的重心,用它来跟踪物体,在摄像头前只移动手就能画出图来,等等他有意思的事情。

如何找到要跟踪的HSV值

这是stackoverflow.com上最常见的问题。其实十分简单,你可以使用这个函数: cv2.cvtColor()。你可以传一个BGR值而不用传一个图片,比如,要找到绿色的HSV值,用下面的命令:

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

现在你拿到了[h-10, 100, 100]和[H+10, 255,255]作为下限和上限。除了这个方法以外,你可以使用任何图片编辑工具,比如GIMP或者其他在线转换器来找到这些值,但是不要忘了调整HSV值域。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,684评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,143评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,214评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,788评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,796评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,665评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,027评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,679评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 41,346评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,664评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,766评论 1 331
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,412评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,015评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,974评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,203评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,073评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,501评论 2 343

推荐阅读更多精彩内容