zoukankan      html  css  js  c++  java
  • OpenCV-Python学习笔记2:颜色空间转换

    OpenCV官方教程中文版 for Python,
    原文为段立辉翻译,感谢Linux公社www.linuxidc.com
    此文档为自学转述,如有侵权请联系本人

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

    1、转换色彩空间

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

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

    # BGR->Gray:cv2.COLOR_BGR2GRAY
    # BGR->HSV:cv2.COLOR_BGR2HSV
    获取所有可以使用的flag
    import cv2
    flags = [i for i in div(cv2) if i startwith('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 numpy as np
    import cv2
    
    cap = cv2.VideoCapture(0)
    
    while(True):
        # 获取每一帧
        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(3)&0xFF
        if k ==15:
            break
    
    cv2.destroyAllWindows()
    

     



  • 相关阅读:
    HDU 2116 Has the sum exceeded
    HDU 1233 还是畅通工程
    HDU 1234 开门人和关门人
    HDU 1283 最简单的计算机
    HDU 2552 三足鼎立
    HDU 1202 The calculation of GPA
    HDU 1248 寒冰王座
    HDU 1863 畅通工程
    HDU 1879 继续畅通工程
    颜色对话框CColorDialog,字体对话框CFontDialog使用实例
  • 原文地址:https://www.cnblogs.com/zheng1076/p/10678838.html
Copyright © 2011-2022 走看看