OpenCV学习笔记-物体追踪
读取图像,获得BGR格式的像素值,然后转换成HSV格式,再利用inRange函数进行颜色分离,标记出来
HSV的色彩取值范围:
H: Hue通道,色调,颜色种类
S: Saturation ,饱和度,颜色浓淡
V:Value ,明度, 颜色明亮度
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