zoukankan      html  css  js  c++  java
  • opencv-python-学习笔记八(颜色空间转化和目标跟踪)

    1.颜色空间转换

    OpenCV中有150多种颜色空间转换方法。但是我们将研究只有两个最广泛使用的,BGR↔Gray 和BGR↔HSV,BGR和灰度图的转换使用 cv2.COLOR_BGR2GRAY ,
    BGR和HSV的转换使用 cv2.COLOR_BGR2HSV。在HSV空间中,H表示色彩/色度,取值范围 [0,179],S表示饱和度,取值范围 [0,255],V表示亮度,取值范围 [0,255]。但是不同的软件使用值不同

    dst = cv.cvtColor( src, code[, dst[, dstCn]] )

    参数:

    src:输入图像:8位无符号,16位无符号(CV_16UC…),或单精度浮点。

    code:转换方式

    dst:与原图像深度大小相同的输出图像。可省略

    dstCn:标图像通道数,默认为0,表示由src和code决定。

    打印所有的code:

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

    函数说明:

    该函数将输入图像从一个颜色空间转换为另一个颜色空间。

    举例

    import matplotlib.pyplot as plt
    import cv2
    
    img_BGR = cv2.imread('2.jpg')  # BGR
    plt.subplot(331), plt.imshow(img_BGR), plt.axis('off'), plt.title('BGR')
    
    img_RGB = cv2.cvtColor(img_BGR, cv2.COLOR_BGR2RGB)
    plt.subplot(332), plt.imshow(img_RGB), plt.axis('off'), plt.title('RGB')
    
    img_GRAY = cv2.cvtColor(img_BGR, cv2.COLOR_BGR2GRAY)
    plt.subplot(333), plt.imshow(img_GRAY), plt.axis('off'), plt.title('GRAY')
    
    img_HSV = cv2.cvtColor(img_BGR, cv2.COLOR_BGR2HSV)
    plt.subplot(334), plt.imshow(img_HSV), plt.axis('off'), plt.title('HSV')
    
    img_YcrCb = cv2.cvtColor(img_BGR, cv2.COLOR_BGR2YCrCb)
    plt.subplot(335), plt.imshow(img_YcrCb), plt.axis('off'), plt.title('YcrCb')
    
    img_HLS = cv2.cvtColor(img_BGR, cv2.COLOR_BGR2HLS)
    plt.subplot(336), plt.imshow(img_HLS), plt.axis('off'), plt.title('HLS')
    
    img_XYZ = cv2.cvtColor(img_BGR, cv2.COLOR_BGR2XYZ)
    plt.subplot(337), plt.imshow(img_XYZ), plt.axis('off'), plt.title('XYZ')
    
    img_LAB = cv2.cvtColor(img_BGR, cv2.COLOR_BGR2LAB)
    plt.subplot(338), plt.imshow(img_LAB), plt.axis('off'), plt.title('LAB')
    
    img_YUV = cv2.cvtColor(img_BGR, cv2.COLOR_BGR2YUV)
    plt.subplot(339), plt.imshow(img_YUV), plt.axis('off'), plt.title('YUV')
    plt.show()
    
    cv2.imshow('gray', img_GRAY)
    
    k = cv2.waitKey(0)  # 始终检测键盘
    if k == 27:  # 按ESC退出
        cv2.destroyAllWindows()

     

    2.目标跟踪

    现在我们知道了如何将BGR图像转换为HSV,我们可以使用它来提取一个彩色对象。HSV的彩色空间比BGR的空间更容易表示一个颜色。在以下案例中,我们尝试提取一个蓝色对象。

    2.1提取流程

    • 提取取视频的每一帧
    • 从BGR转换到HSV颜色空间
    • 我们对HSV图像设置一个蓝色范围的阈值
    • 提取

    3.如何查找BGR值的HSV,同时设定目标跟踪中的阈值

    查找BGR的HSV值

    方法一:

    import cv2 as cv
    import numpy as np
    
    
    # 同样可以使用函数cv.cvtColor()。此时只需传递所需的BGR值,而不是传递图像。例如,要查找绿色的HSV值,怎运行以下程序
    green = np.uint8([[[0, 255, 0]]])
    hsv_green = cv.cvtColor(green, cv.COLOR_BGR2HSV)
    print(hsv_green) # [[[60 255 255]]]

    方法二:

    设定阈值

    上述所得结果[H- 10,100,100]和[H+ 10,255, 255]分别作为下界和上界。方法一种所得的  H  即为60.

  • 相关阅读:
    [android] 帧布局
    [android] 表格布局和绝对布局
    使用LVS实现负载均衡原理及安装配置详解
    学习Docker之Dockerfile的命令
    使用docker-compose部署nginx
    CentOS Bash 命令补全增强软件包 bash-completion
    “三次握手,四次挥手”你真的懂吗?
    0777 0的意思
    linux文件或目录权限修改后如何恢复(备份了权限就能恢复)
    centos7进入单用户模式
  • 原文地址:https://www.cnblogs.com/blog-xyy/p/11184703.html
Copyright © 2011-2022 走看看