最常用的两种颜色空间方法 : BGR–Gray 和 BGR–HSV。
cv2.cvtColor(input_image, flag)input_image 转换的图像 flag 转换类型 对于 BGR-Gray 的转换,我们要使用的 flag 就是cv2.COLOR_BGR2GRAY。 对于 BGR-HSV 的转换,我们用的 flag 就是cv2.COLOR_BGR2HSV。
在 OpenCV 的 HSV 格式中, H(色彩/色度)的取值范围是 [0, 179],S(饱和度)的取值范围 [0, 255], V(亮度)的取值范围 [0, 255]。但是不同的软件使用的值可能不同。所以当你需要拿 OpenCV 的 HSV 值与其他软件的 HSV 值进行对比时,一定要记得归一化。
物体跟踪在我们的程序中,我们要提取的是一个黄色的物体。下面就是就是我们要做的几步: • 从视频中获取每一帧图像 • 将图像转换到 HSV 空间 • 设置 HSV 阈值到黄色范围。 • 获取黄色物体,当然我们还可以做其他任何我们想做的事。
import cv2 import numpy as np cap = cv2.VideoCapture(0) while(True): ret, frame = cap.read()#获取图像 # 转换到 HSV hsv=cv2.cvtColor(frame,cv2.COLOR_BGR2HSV) # 设定橙色的阈值 lower_blue=np.array([0,50,50]) upper_blue=np.array([20,255,255]) # 根据阈值构建掩模 mask=cv2.inRange(hsv,lower_blue,upper_blue) # 对原图像和掩模进行位运算 res=cv2.bitwise_and(frame,frame,mask=mask) # 显示图像 cv2.imshow('frame',frame) cv2.imshow('mask',mask) cv2.imshow('res',res) if cv2.waitKey(1) & 0xFF == ord('q'):#监测到键盘输入q关闭 break cap.release()#释放摄像头 cv2.destroyAllWindows()#关闭窗口 找到跟踪对象的HSV值我们要找到绿色的 HSV 值,我们只需在终端输入以下命令:
green=np.uint8([[[0,255,0]]]) #获取绿色 hsv_green=cv2.cvtColor(green,cv2.COLOR_BGR2HSV) #转换 print (hsv_green)[[[ 60 255 255]]]
