zoukankan      html  css  js  c++  java
  • OpenCv学习3——色彩空间

    什么是色彩空间

    https://zhuanlan.zhihu.com/p/28741691(参考知乎专栏)

    常见的色彩空间

    • RGB
    • HSV
    • HIS
    • YCrCb
    • YUV

    代码层面的知识点

    色彩空间相互转换(RGB HSV YUV常用)

    def color_space_demo(image):
        gray = cv.cvtColor(image, cv.COLOR_BGR2GRAY)
        cv.imshow("gray", gray)
        hsv = cv.cvtColor(image, cv.COLOR_BGR2HSV)
        cv.imshow("hsv", hsv)
        yuv = cv.cvtColor(image, cv.COLOR_BGR2YUV)
        cv.imshow("yuv", yuv)
        Ycrcb = cv.cvtColor(image, cv.COLOR_BGR2YCrCb)
        cv.imshow("Ycrcb", Ycrcb)

     

    学会使用inRange

    应用:提取视频中特定颜色的物品(追踪有颜色的对象)

    首先提取一段视频

    def extract_object_demo():
        capture = cv.VideoCapture("H:codingpython_opencv_tutorial_codespracticelisa.mp4")
        while(True):
            ret, frame = capture.read()
            if ret == False:
                break
            cv.imshow("video", frame)
         c = cv.waitKey(50)
            if c == 27:
                break

    hsv二值化(找黄颜色)

    def extract_object_demo():
        capture = cv.VideoCapture("H:codingpython_opencv_tutorial_codespracticelisa.mp4")
        while(True):
            ret, frame = capture.read()
            if ret == False:
                break
            hsv = cv.cvtColor(frame, cv.COLOR_BGR2HSV)
            lower_hsv = np.array([26, 43, 46])
            higer_hsv = np.array([34, 255, 255])
            mask = cv.inRange(hsv, lower_hsv, higer_hsv)#得到二值图像
            cv.imshow("video", frame)
            cv.imshow("mask", mask)
            c = cv.waitKey(50)
            if c == 27:
                break

    通道的分离与合并

    b, g, r = cv.split(src)#三通道分离
    cv.imshow("blue", b)
    cv.imshow("green", g)
    cv.imshow("red", r)
    
    src[:,:,2] = 0
    src = cv.merge([b, g, r])#三通道合并
    cv.imshow("changed image", src)

     本章内容完整代码

    import cv2 as cv
    import numpy as np
    
    def extract_object_demo():
        capture = cv.VideoCapture("H:codingpython_opencv_tutorial_codespracticelisa.mp4")
        while(True):
            ret, frame = capture.read()
            if ret == False:
                break
            hsv = cv.cvtColor(frame, cv.COLOR_BGR2HSV)
            lower_hsv = np.array([26, 43, 46])
            higer_hsv = np.array([34, 255, 255])
            mask = cv.inRange(hsv, lower_hsv, higer_hsv)#得到二值图像
            cv.imshow("video", frame)
            cv.imshow("mask", mask)
            c = cv.waitKey(50)
            if c == 27:
                break
    
    def color_space_demo(image):
        gray = cv.cvtColor(image, cv.COLOR_BGR2GRAY)
        cv.imshow("gray", gray)
        hsv = cv.cvtColor(image, cv.COLOR_BGR2HSV)
        cv.imshow("hsv", hsv)
        yuv = cv.cvtColor(image, cv.COLOR_BGR2YUV)
        cv.imshow("yuv", yuv)
        Ycrcb = cv.cvtColor(image, cv.COLOR_BGR2YCrCb)
        cv.imshow("Ycrcb", Ycrcb)
    
    print("---------hello python---------")
    src = cv.imread("H:codingpython_opencv_tutorial_codespracticekrystal.jpg")
    cv.namedWindow("input image", cv.WINDOW_AUTOSIZE)
    cv.imshow("input image", src)
    
    b, g, r = cv.split(src)#三通道分离
    cv.imshow("blue", b)
    cv.imshow("green", g)
    cv.imshow("red", r)
    
    src[:,:,2] = 0
    src = cv.merge([b, g, r])#三通道合并
    cv.imshow("changed image", src)
    #print(type(src))
    #color_space_demo(src)
    #extract_object_demo()
    cv.waitKey(0)
    cv.destroyAllWindows()
  • 相关阅读:
    CPU、io、mem之间的关系
    SSH交互式脚本StrictHostKeyChecking选项 benchmode=yes
    Linux学习笔记:fuser和lsof
    /proc/sys/kernel/sysrq /proc/sysrq-trigger----强制重启/触发器
    Android UI学习
    Android之TabHost布局(转)
    android AsyncTask介绍(转)
    android:imeOptions属性(转)
    Android:dimen尺寸资源文件的使用(转)
    解决Android解析图片的OOM问题!!!(转)
  • 原文地址:https://www.cnblogs.com/yzh1008/p/12523913.html
Copyright © 2011-2022 走看看