python OpenCV学习笔记(八):改变颜色空间

官方文档 – https://docs.opencv.org/3.4.0/df/d9d/tutorial_py_colorspaces.html


改变颜色空间

cv.cvtColor(src, code[, dst[, dstCn]])
code:颜色空间转换代码,详见cv::ColorConversionCodes

对象追踪

从视频中提取蓝色物体的demo

import cv2 as cv
import numpy as np

# cap = cv.VideoCapture(0)  # 从视频设备获取
cap = cv.VideoCapture('test.mp4')  # 从本地视频文件获取

while True:
    # 获取每一帧
    _, frame = cap.read()

    # 转换BGR到HSV
    hsv = cv.cvtColor(frame, cv.COLOR_BGR2HSV)

    # 定义HSV中蓝色范围
    lower_blue = np.array([100, 50, 50])
    upper_blue = np.array([130, 255, 255])

    # 获取HSV图片中的蓝色
    mask = cv.inRange(hsv, lower_blue, upper_blue)

    # 合并遮罩和原图
    res = cv.bitwise_and(frame, frame, mask=mask)

    cv.imshow('frame', frame)
    cv.imshow('mask', mask)
    cv.imshow('res', res)
    k = cv.waitKey(5) & 0xFF
    if k == 27:
        break

cv.destroyAllWindows()

cv.inRange(src, lowerb, upperb[, dst])
lowerb:包含低边界数组或标量。
upperb:包含上边界数组或标量。

如何找到HSV中的值来追踪

传递BGR中的值来查找HSV中对应的值

green = np.uint8([[[0,255,255]]])
hsv_green = cv.cvtColor(green, cv.COLOR_BGR2HSV)
# [[[60 255 255]]]

对于HSV,色调(Hue)的范围是[0,179],饱和度(Saturation)的范围是[0,255],明度(Value)的范围是[0,255]

你可能感兴趣的:(OpenCV)