python:
1.先是通过
import cv2
import numpy as np
red = np.uint8([[[255,0,0]]])
hsv_red=cv2.cvtColor(red,cv2.COLOR_BGR2HSV)
print hsv_red
green=np.uint8([[[0,255,0]]])
hsv_green=cv2.cvtColor(green,cv2.COLOR_BGR2HSV)
print hsv_green
blue = np.uint8([[[0,0,255]]])
hsv_blue=cv2.cvtColor(blue,cv2.COLOR_BGR2HSV)
print hsv_blue
得出红绿蓝的HSV值。结果是:
注意此时的值是在OpenCV的条件下得出,则默认是使用BGR的顺序。
2.通过代码实现同时提取红,蓝,绿三个不同颜 色的物体的功能。
#coding=utf-8</code>
import cv2
import numpy as np
cap=cv2.VideoCapture(0)
while(1):
# 获取每一帧
ret,frame=cap.read()
# 转换到 HSV
hsv=cv2.cvtColor(frame,cv2.COLOR_BGR2HSV)
# 设定阈值,注意这里使用的numpy所以回到了RGB的顺序,之前在BGR状态下阈值是0-120,故现在是60-180
lower_blue=np.array([60,100,100])
upper_blue=np.array([180,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)
k=cv2.waitKey(5)&0xFF
if k==27:
break
# 关闭窗口
cv2.destroyAllWindows()
实现结果: