精华内容
下载资源
问答
  • 颜色空间转换

    千次阅读 2020-10-23 08:10:50
    在 OpenCV 中有 超过150 种进行颜色空间转换的方法。但是你以后就会发现我们经常用到的也就两种:BGR↔Gray 和 BGR↔HSV。 我们用到的函数是cv2.cvtColor(input_imageflag),其中flag就是转换类型。 对于BGR↔Gray的...

    使用工具Python3.5
    使用包cv2,numpy
    涉及函数cv2.cvtColor(),cv2.inRange()

    1.转换颜色空间
    在 OpenCV 中有 超过150 种进行颜色空间转换的方法。但是你以后就会发现我们经常用到的也就两种:BGR↔Gray 和 BGR↔HSV。
    我们用到的函数是cv2.cvtColor(input_imageflag),其中flag就是转换类型。
    对于BGR↔Gray的转换,我们使用的flag就是cv2.COLOR_BGR2GRAY。
    同样对于BGR↔HSV的转换我们用的flag就是cv2.COLOR_BGR2HSV。
    你可以下的命令得到所有可用的 flag。

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

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

    2.物体跟踪
    现在我们知怎样将一幅图像从 BGR 换到 HSV 了,我们可以利用 一点来提取带有某个特定色的物体。在 HSV 颜色空间中要比在 BGR 空间中更容易表示一个特定颜色。在我们的程序中,我们提取的是一个蓝色的物体。下就是就是我们做的几步:
    • 从视频中获取每一帧图像
    • 将图像换到 HSV 空间
    • 设置 HSV 阀值到蓝色范围。
    • 获取蓝色物体,当然我们可以做其他任何我们想做的事,比如:在蓝色物体周围画一个圈。

    import cv2
    import numpy as np
    
    cap = cv2.VideoCapture(0)
    
    while(1):
        #获取每一帧
        ret,frame = cap.read()
        #转换到HSV
        hsv = cv2.cvtColor(frame,cv2.COLOR_BGR2HSV)
        #设定蓝色的阀值
        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(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()
    


    噪点还是很多,后面会介绍如何消减噪音。
    追踪物体轮廓,以后可以找物体中心,然后跟踪物体,可以在摄像头前挥挥手就可以画图等一些有趣的事。

    3.怎样找到要跟踪对象的HSV值
    函数cv2.cvtColor()可以用到这里,现在需要传入的参数是RGB的值而不是一幅图。例如要找到绿色的HSV值,只需在终端输入以下命令:

    import cv2 import numpy as np
    green=np.uint8([0,255,0]) hsv_green=cv2.cvtColor(green,cv2.COLOR_BGR2HSV)
    
    error: /builddir/build/BUILD/opencv-2.4.6.1/ modules/imgproc/src/color.cpp:3541: 
    error: (-215) (scn == 3 || scn == 4) && (depth == CV_8U || depth == CV_32F) in function cvtColor
    
    #scn (the number of channels of the source),
    #i.e. self.img.channels(), is neither 3 nor 4. 
    # #depth (of the source), 
    #i.e. self.img.depth(), is neither CV_8U nor CV_32F.
    # 所以不能用 [0,255,0] 而用 [[[0,255,0]]] 
    # 的三层括号应分别对应于 cvArray cvMat IplImage
    
    green=np.uint8([[[0,255,0]]]) hsv_green=cv2.cvtColor(green,cv2.COLOR_BGR2HSV) 
    print (hsv_green )
    [[[60 255 255]]]
    

    现在你可以分别用 [H-100,100,100] 和 [H+100,255,255] 做上下阀值。除了个方法之外,你可以使用任何其他图像编辑软件(例如 GIMP) 或者在线换软件找到相应的 HSV 值,但是后别忘了调节 HSV 的范围。

    展开全文
  • 色彩空间转换

    2014-04-13 12:34:16
    分别是一个颜色的红 绿和蓝坐标 它们的值是在 0 到 1 之间的实数 设 max等价于 r g和b中的最大者 设 min等于这些值中的最小者 要找到在 HSV 空间中的 h s v 值 这里的 h∈ [0 360)是角度的色相角 而 s v∈ [0 1] 是...
  • RGB颜色空间与YCbCr颜色空间转换 RGB颜色空间与YCbCr颜色空间转换 1. 前言 2. RGB颜色空间转换YUV颜色空间描述 3. 代码实现 1. 前言 YUV是PAL和SECAM模拟彩色电视制式采用的颜色空间。YUV颜色空间以演播室...

    RGB颜色空间与YUV颜色空间转换

    1. 前言

    YUV是PAL和SECAM模拟彩色电视制式采用的颜色空间。YUV颜色空间以演播室质量标准为目标,采用CCIR01编码,目前YUV颜色空间被广泛应用在电视的色彩显示等领域中。
    在YUV颜色空间中,Y表示明亮度(luminance),即灰阶值;U和V表示的是色度(Chrominance),U和V构成的彩色两个分量,作用是描述影像色彩及饱和度,用于指定像素的颜色。
    YUV主要用于优化彩色视频信号的传输,使其向后相容老式黑白电视。与RGB视频信号传输相比,它最大的优点在于只需占用极少的频宽(RGB要求三个独立的视频信号同时传输)。“亮度”是透过RGB输入信号来建立的,方法是将RGB信号的特定部分叠加到一起。“色度”则定义了颜色的两个方面─色调与饱和度,分别

    展开全文
  • RGB颜色空间与HSV颜色空间转换 RGB颜色空间与HSV颜色空间转换 1. 前言 2. RGB颜色空间与HSV颜色空间转换描述 3. 代码实现 1. 前言 HSV(Hue, Saturation, Value)颜色空间是一种面向视觉感知的视觉颜色模型,...

    RGB颜色空间与HSV颜色空间转换

    1. 前言

    HSV(Hue, Saturation, Value)颜色空间是一种面向视觉感知的视觉颜色模型,即:色调(Hue)、饱和度(Saturation)、亮度(Value)。其中,色调描述纯色的属性,饱和度描述纯色被白光稀释的程度的度量,亮度是一个主观描述的变量,即物体的明亮程度。HSV颜色空间一般利用于边缘检测、图像分割和目标识别等领域。

    HSV色彩空间通常用一个圆锥体来表示,圆锥体内部每个点代表一种特定的颜色。角度位置表示颜色的色调,到中轴
    线的距离表示饱和度,高度表示亮度。圆锥体的顶点表示黑色,它的色调和饱和度是没有意义的。

    展开全文
  • RGB颜色空间与CIE-XYZ颜色空间转换 RGB颜色空间与CIE-XYZ颜色空间转换 1. 前言 2. RGB颜色空间与CIE-XYZ颜色空间转换描述 3. 代码实现 1. 前言 国际照明委员会(CIE,International Commission on ...

    RGB颜色空间与CIE-XYZ颜色空间转换

    1. 前言

    国际照明委员会(CIE,International Commission on Illumination)的色度最早使用的模型之一。CIE XYZ颜色系统是国际委员会在1931年开发的颜色系统,CIE XYZ颜色系统是其他颜色的基础。其使用红色(R)、绿色(G)、蓝色(B)三种颜色作为三原色,其他颜色可由三原色通过变换得到。

    展开全文
  • RGB颜色空间与HSI颜色空间转换 RGB颜色空间与HSI颜色空间转换 1. 前言 2. RGB颜色空间与HSI颜色空间转换描述 3. 程序实现 1. 前言 HSI色彩空间是从人的视觉系统出发,用色调(Hue)、色饱和度(Saturation或...
  • RGB颜色空间与YIQ颜色空间转换 RGB颜色空间与YIQ颜色空间转换 1. 前言 2. RGB颜色空间转换YIQ颜色空间描述 3. 代码实现 1. 前言 YIQ色彩空间通常被北美的电视系统所采用,属于NTSC(National Television ...
  • 色彩空间转换matlab

    2014-04-14 21:30:42
    色彩空间转换matlab RGB HSV YIQ NTSC
  • RGB颜色空间转换YCbCr颜色空间 RGB颜色空间转换YCbCr颜色空间 1. 前言 2. RGB颜色空间转换YCbCr颜色空间描述 3. 代码实现 1. 前言 在数字视频领域通常使用YCbCr颜色空间模型。YCrCb颜色模型通常使用亮度(Y)和...
  • opencv常用的样色空间包括RGB, HSV和YUV等。RGB颜色空间是基于三基色原理二形成的,常用于图像显示系统中;HSV描述的色度,饱和度,亮度这些表示...code是颜色空间转换模式,常用的有有CV_RGB2GRAY, CV_RGB2HSV,CV_
  • 图像颜色空间转换

    2015-12-09 20:43:22
    图像颜色空间转换代码,采用C/C++源码实现,将rgb值转换到hsv空间(rgb2hsv)、hsl空间(rgb2hsl)和hsi空间(rgb2hsi),只需要提供RGB三个值即可直接转换到对应的颜色空间通道的值。
  • 本资源基本包括了所有YUV格式之间,以及与RGB格式之间的颜色空间转换的实现,比如I420转NV12,YUV420PtoRGB24,NV12、NV21、YV12和I420的相互转换等。
  • OpenCV色彩空间转换

    2021-07-16 21:28:55
    # -*- coding: utf-8 -*-...色彩空间类型转换: 同一幅图像可从一个色彩空间转换到另一个色彩空间 3.另外两个色彩空间:GRAY HSV 3.1 GRAY: 通常指灰度图像,灰度级别用区间[0,255]中数值表示 BGR转换到GRAY 调用cvt
  • 图像色彩空间转换

    2012-06-21 15:05:51
    图像色彩空间转换,将RGB空间转换到HSI、HSV、YUV这三个色彩空间.
  • 这是用VS 2005.net平台下,编写的RGB颜色空间转换成YUV颜色空间.严格的按颜色空间转换公式转换,并通过打点的方式打印在屏幕上。打印我是分 (奇、偶)两场打印的。
  • Mat 颜色空间转换

    千次阅读 2016-11-02 15:21:29
    颜色空间转换,cvtColor函数和cvCvtColor函数
  • 基于vc++实现四面体插值算法实现RGB到CIELab颜色空间转换 基于vc++实现四面体插值算法实现RGB到CIELab颜色空间转换
  • 涉及到的函数有cv2.cvtColor(),imread(),imshow(),最常使用的颜色空间有BGR/GRAY/HSV,在OpenCV中有超过150种进行颜色空间转换的方法,而我们经常用到的就是BGR->Gray,BGR->HSV,经常使用的将色彩空间进行...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 131,209
精华内容 52,483
关键字:

色彩空间转换