OpenCV学习笔记-物体追踪

读取图像,获得BGR格式的像素值,然后转换成HSV格式,再利用inRange函数进行颜色分离,标记出来


HSV的色彩取值范围:
H: Hue通道,色调,颜色种类

S:    Saturation ,饱和度,颜色浓淡
V:Value ,明度, 颜色明亮度
OpenCV学习笔记-物体追踪
inRange函数:
inRange(src, lowerb, upperb, dst=None)
src: 输入图像
lowerb: 像素值的下边界,如果图中的像素低于这个值,就变为0
upperb: 像素值的上边界,如果图中的像素高于这个值,就变为0,lowerb~upperb之间的值变为255
dst: 输出的是二值化的图像

总结一下就是将低于lowerb的和高于upperb的部分全部变为0,lowerb~upperb之间的值变为255,得到一幅二值图,只显示我们感兴趣的区域。

具体代码:

#利用inrange进行物体追踪
def extrace_video_demo():
    capture = cv.VideoCapture('img/IMG_8464.MOV')
    while(True):
        ret,frame = capture.read()
        if ret==False:
            break
        hsv = cv.cvtColor(frame,cv.COLOR_BGR2HSV)#把每一帧的图像转成HSV格式
        lower_hsv = np.array([11,43,46])
        upper_hsv = np.array([25,255,255]) #确定颜色空间
        mask = cv.inRange(hsv,lowerb=lower_hsv,upperb=upper_hsv) #进行颜色分离
        dst = cv.bitwise_and(frame,frame,mask=mask) #在图像上标记
        cv.imshow('video',frame)
        cv.imshow('mask',mask)
        c = cv.waitKey(40)
        if c==27:
            break