美文网首页
opencv颜色空间转换

opencv颜色空间转换

作者: Zoe_C | 来源:发表于2018-04-28 10:02 被阅读0次

    Opencv中有数百种关于在不同色彩空间之间转换的方法。当前,在计算机视觉中有三种常见的色彩空间:灰度,BGR以及HSV(Hue:色调,Saturation:饱和度,Value:黑暗的程度)

    1).灰度色彩空间是通过去除彩色信息来将其转换成灰阶,灰度色彩空间对中间处理特别有效,比如人脸检测。

    2).BGR,即蓝-绿-红色彩空间,每一个像素点都由一个三元数组来表示,分别代表蓝、绿、红三种颜色。网页开发者可能熟悉另一个与之相似的颜色空间:RGB,它们只是在颜色的顺序上不同。

    3).HSV,H(Hue)是色调,S(Saturation)是饱和度,V(Value)表示黑暗的程度(或光谱另一端的明亮程度)

    BGR的简短说明:当第一次处理BGR色彩空间时,可以不要其中的一个色彩分量,比如像素值[0, 255, 255](没有蓝色,绿色分量取最大值,红色分量取最大值)表示黄色。

    PS:计算机所使用的颜色模型具有可加性并且处理的是光照,而绘画遵从的是减色模型,计算机使用显示器发光来做颜色的媒介,故计算机上的软件使用的是加色模型。

    1.转换颜色空间

    在 OpenCV 中有 超过百种进行颜色空间转换的方法。但是你以后就会发现我们经常用到的也就两种:BGR↔Gray 和 BGR↔HSV。

    我们用到的函数是cv2.cvtColor(input_imageflag),其中flag就是转换类型。

    对于BGR↔Gray的转换,我们使用的flag就是cv2.COLOR_BGR2GRAY。

    同样对于BGR↔HSV的转换我们用的flag就是cv2.COLOR_BGR2HSV。

    import cv2

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

    print(len(flags))  #274

    PS:在 OpenCV 的 HSV 格式中,H(色彩/色度)的取值范围是 [0,179], S(饱和度)的取值范围 [0,255],V(亮度)的取值范围 [0,255]。但是不同的软件使用的值可能不同。所以当你拿 OpenCV 的 HSV 值与其他软件的 HSV 值对比时,一定要记得归一化。

    2.目标跟踪(针对颜色)cv2.inRange()  cv2.bitwise_and()

    现在我们知道如何将BGR图像转换为HSV,我们可以使用它来提取彩色对象。在HSV中,表示颜色比表示RGB颜色空间更容易。在我们的应用程序中,我们将尝试提取蓝色对象。下面是方法:

    import cv2

    import numpy as np

    img = cv2.imread('pinggai.jpg')

    hsv = cv2.cvtColor(img,cv2.COLOR_BGR2HSV)  #转换到HSV

    #设定蓝色的阀值

    lower_blue = np.array([110,50,50])

    upper_blue = np.array([130,255,255])

    #根据阀值构建掩模

    mask = cv2.inRange(hsv,lower_blue,upper_blue)

    #对原图和掩模进行位运算

    res = cv2.bitwise_and(img,img,mask,mask)

    cv2.imshow('img',img)

    cv2.imshow('mask',mask)

    cv2.imshow('res',res)

    k = cv2.waitKey()

    cv2.destroyAllWindows()

    PS:噪点还是很多,想啊哟更好看点,需要消减噪音

    3.找到要跟踪对象的HSV值

    只需传递所需的BGR值,而不是传递图像

    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范围

    相关文章

      网友评论

          本文标题:opencv颜色空间转换

          本文链接:https://www.haomeiwen.com/subject/fewplftx.html