本文共 857 字,大约阅读时间需要 2 分钟。
RGB是为了让机器更好的显示图像,对于人类来说并不直观,HSV更为贴近我们的认知,所以通常我们在针对某种颜色做提取时会转换到HSV颜色空间里面来处理.
在opencv中的颜色阀值如下图所示: 以追踪摄像有种的蓝色为例:import cv2import numpy as npflags = [i for i in dir(cv2) if i.startswith('COLOR_')]print(flags)cap = cv2.VideoCapture(0, cv2.CAP_DSHOW)while True: ret,frame = cap.read() hsv = cv2.cvtColor(frame,cv2.COLOR_BGR2HSV) #将画面转换成HSV lo_blue = np.array([100,43,46]) up_blue = np.array([124,255,255]) #确定蓝色的HSV范围 mask = cv2.inRange(hsv,lo_blue,up_blue) #过滤颜色,在范围中的为255,在范围之外的为0 res = cv2.bitwise_and(frame,frame,mask = mask) #确定掩膜 cv2.imshow('frame',frame) #显示原图 cv2.imshow('mask',mask) #显示过滤后的图像 cv2.imshow('res',res) #显示与掩膜叠加后的图像 key = cv2.waitKey(1) if key==27: breakcv2.destroyAllWindows()根据本RGB转换成HSV
red = np.uint8([[[0,0,255]]])hsv_red = cv2.cvtColor(red, cv2.COLOR_BGR2HSV)print(hsv_red)
转载地址:http://whben.baihongyu.com/