OpenCV练习:尝试同时提取多个不同的颜色物体,比如同时提取红,蓝,绿三个不同颜色的物体。

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
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()

实现结果:

OpenCV练习:尝试同时提取多个不同的颜色物体,比如同时提取红,蓝,绿三个不同颜色的物体。_第1张图片

 

你可能感兴趣的:(OpenCV练习:尝试同时提取多个不同的颜色物体,比如同时提取红,蓝,绿三个不同颜色的物体。)