通过指定颜色,这次的例子是绿色,即图片中所有的绿色(这里的绿色有清晰的界限,最低值和最高值,一般所说的绿色是非常抽象的,但计算机的绿色要明显指定),都会捕获到,并显示出来。
import cv2 as cv
import numpy as np
def extrace_object_demo():
capture = cv.VideoCapture("D:/testvideo.rmvb")
while(True):
ret, frame = capture.read()#第一个参数ret的值为True或False,代表有没有读到图片。第二个参数是frame,是当前截取一帧的图片。
if ret == False:#如果读不到图片,退出循环,即视频的图片已结束
break
hsv = cv.cvtColor(frame, cv.COLOR_BGR2HSV)#把它转成色彩空间
lower_hsv = np.array([37, 43, 46])#创建一行3列,最低值
upper_hsv = np.array([77, 255, 255])#创建一行3列,最高值
mask = cv.inRange(hsv, lowerb=lower_hsv, upperb=upper_hsv)#创建跟踪颜色,这次是绿色,输入图片,低值,高值
#cv.imshow("mask", mask)#可以直接用,但只是原始的数据,
dst = cv.bitwise_and(frame, frame, mask=mask)#这个应该是加载视频的数据进行演示,使用位“与”运算来叠加面具,前面两个参数固定,最后一个是掩码
cv.imshow("video", frame)#输出原始视频
cv.imshow("mask", dst)#补抓到的视频,绿色颜色
c = cv.waitKey(40)# 程序会等待40毫秒才会读取下一帧
if c == 27:#如果是按“esc”,则退出
break
print("--------- Hello Python ---------")
extrace_object_demo()
cv.waitKey(0)
效果如下:
gamblerofdestinyR14 发布了59 篇原创文章 · 获赞 1 · 访问量 1189 私信 关注