100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > opencv 图像颜色空间转换和特定颜色物体追踪

opencv 图像颜色空间转换和特定颜色物体追踪

时间:2018-10-18 14:24:44

相关推荐

opencv 图像颜色空间转换和特定颜色物体追踪

颜色空间转换

HSV简介

HSV是一个常用于颜色识别的模型,相比BGR更易区分颜色。H表示色调(Hue),S表示饱和度(Saturation),V表示明度(Value)。

OpenCV中色调H范围为[0,179],饱和度S是[0,255],明度V是[0,255]。虽然H的理论数值是0°~360°,但8位图像像素点的最大值是255,所以OpenCV中除以了2,某些软件可能使用不同的尺度表示,所以同其他软件混用时,记得归一化。

opencv中颜色空间转换

cv.cvtColor()用来进行颜色模型转换,参数1是要转换的图片,参数2是转换模式。

BGR -> Gray

cv.cvtColor(img, cv.COLOR_BGR2GRAY)

BGR -> HSV

cv.cvtColor(img, cv.COLOR_BGR2HSV)

其它情况请举一反三

颜色转换本质

颜色转换其实是数学运算,如灰度化最常用的是:

gray = R * 0.299 + G * 0.587 + B * 0.114

视频中特定颜色物体追踪

HSV是一个常用于颜色识别的模型,相比BGR更易区分颜色,转换模式用COLOR_BGR2HSV表示。

算法流程

捕获视频中的一帧从BGR转换到HSV提取蓝色范围的物体只显示蓝色物体

代码实现

import cv2 as cv import numpy as np capture = cv.VideoCapture(0)# 蓝色的范围,不同光照条件下不一样,可灵活调整lower_blue = np.array([100, 110, 110])upper_blue = np.array([130, 255, 255])while(True):# 1.捕获视频中的一帧ret, frame = capture.read()# 2.从BGR转换到HSVhsv = cv.cvtColor(frame, cv.COLOR_BGR2HSV)# 3.inRange():介于lower/upper之间的为白色,其余黑色mask = cv.inRange(hsv, lower_blue, upper_blue)# 4.只保留原图中的蓝色部分res = cv.bitwise_and(frame, frame, mask=mask)cv.imshow('frame', frame)cv.imshow('mask', mask)cv.imshow('res', res)if cv.waitKey(1) == ord('q'):break

实验结果(res)

如何得到蓝色的HSV的上下限lower和upper范围

blue = np.uint8([[[255, 0, 0]]])hsv_blue = cv2.cvtColor(blue, cv2.COLOR_BGR2HSV)print(hsv_blue) # [[[120 255 255]]]

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。