连接上一节,这一节直接上代码:
#!/usr/bin/env python
# _*_ coding:utf-8 _*_
import cv2 as cv
import numpy as np
#读取视频文件
def extract_obj():
capture = cv.VideoCapture("D:\exerciseResource\\02Jumping.wmv") #读取视频文件
while(True): #判断是否读取成功
ret, frame = capture.read()
if ret == False:
break
#把视频中的某种颜色过滤出来
hsv = cv.cvtColor(frame, cv.COLOR_BGR2HSV) # 转换成HSV色彩空间
lower_hsv = np.array([0, 43, 46]) # 色彩低值(红色)
upper_hsv = np.array([180, 255, 255]) # 色彩高值
mask =cv.inRange(hsv, lowerb=lower_hsv, upperb=upper_hsv)#inRang之后得到的是二值图像
'''与或非的逻辑操作'''
dst = cv.bitwise_and(frame, frame, mask=mask)#这里可以把彩色图像显示出来
cv.imshow("video", frame) #显示视频文件
cv.imshow("mask", dst)#这里显示dst而不是mask
c = cv.waitKey(30)
if c == 27:
break
extract_obj()
cv.waitKey(0)
cv.destroyAllWindows()
运行效果如下:
第一个是原视频,第二个是过滤掉灰色背景的视频!