美文网首页
物体跟踪

物体跟踪

作者: 码农啊涛 | 来源:发表于2020-02-04 13:53 被阅读0次

    转换颜色空间

    # -*- coding: utf-8 -*-

    import cv2

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

    gray =  cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)  #RGB转换为GRAY

    #这里的生成的gray图是单通道的

    cv2.imshow("gray", gray)

    hsv = cv2.cvtColor(img, cv.COLOR_BGR2HSV) #RGB转换为HSV 

    cv2.imshow("hsv", hsv)

    cv2.namedWindow('first_image', cv.WINDOW_AUTOSIZE)

    cv.imshow('first_image', src) 

    cv2.waitKey(10000) 

    cv2.destroyAllWindows()

    1.RGB就是指Red,Green和Blue,一副图像由这三个channel(通道)构成

    2.Gray就是只有灰度值一个channel。 

    3.HSV即Hue(色调),Saturation(饱和度)和Value(亮度)三个channel

    什么是HSV色彩空间

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

    HSV颜色空间模型

    现在我们知道怎样将一幅图像从 BGR 转换到 HSV 了,我们可以利用这一点来提取带有某个特定颜色的物体。在HSV 颜色空间中要比在 BGR 空间中更容易表示一个特定颜色。在我们的程序中,我们要提取的是一个蓝色的物体。

    代码如下:

    # -*- coding: utf-8 -*-

    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)

            # 显示图像

            cv2.imshow('frame',frame)

            cv2.imshow('mask',mask)

            k=cv2.waitKey(5)&0xFF

            if k==27:

                       break

    # 关闭窗口

    cv2.destroyAllWindows()

    运行结果:

    注意:

    (1)cv2.inRange函数参数有三个

                第一个参数:hsv指的是原图

                第二个参数:lower_blue指的是图像中低于这个lower_blue的值,图像值变为0

                第三个参数:upper_blue指的是图像中高于这个upper_blue的值,图像值变为0

    (2)hsv基本颜色分量表

    相关文章

      网友评论

          本文标题:物体跟踪

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