OpenCV-inRange提取视频中的一种颜色

将视频流读进来,把每一帧图像色彩空间转换为 HSV,然后用 inRange 把颜色分离出来。

H:0~180

S:0~255

V:0~255

HSV颜色对应的分量范围

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
import cv2 as cv
import numpy as np


def extrace_obj_demo():
capture = cv.VideoCapture("/Users/hanoi_ahoj/Downloads/2.mp4")
while True:
ret, frame = capture.read()
# 当视频流读完的时候,ret 就为 False
if not ret:
break

hsv = cv.cvtColor(frame, cv.COLOR_BGR2HSV)
lower_hsv = np.array([35, 43, 46]) # 绿色的低值
upper_hsv = np.array([77, 255, 255]) # 绿色的高值
mask = cv.inRange(hsv, lowerb=lower_hsv, upperb=upper_hsv)
cv.imshow('video', frame)
cv.imshow('mask', mask)

c = cv.waitKey(40)
if c == 27:
break


if __name__ == '__main__':
extrace_obj_demo()

运行结果


文章作者: ahoj
文章链接: https://ahoj.cc/2019/07/OpenCV-inRange提取视频中的一种颜色/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 ahoj 的小本本