OpenCV学习7-摄像头物体追踪-红色瓶盖

'''
摄像头物体追踪-红色瓶盖
RGB色彩空间的基础是对叠加型三原色(红、绿、蓝)的应用。之所以选择它们,是因为把它们组合起来后可以产生色域很宽
的各种颜色。实际上,人类的视觉系统也是基于对三原色的感知,因为视锥细胞的灵敏度位于红绿蓝的光谱周围。这通常是数
字成像中默认的色彩空间,因为这就是人类看数字图像的方式。捕捉到的光线穿过红绿蓝三种滤波器,并且在数字图像中会对
红绿蓝三个通道做校正,当三种颜色强度相同时就会取得灰度,即从黑色(0, 0, 0)到白色(255,255, 255)。
但是,利用RGB色彩空间计算颜色之间的差距,并不是衡量两个颜色相似度的最好方式。实际上RGB并不是感知均匀的色彩空
间。就是说,两种具有一定差距的颜色可能看起来非常接近,而另外两种具有同样差距的颜色看起来却差别很大。
HSV和HLS这两种色彩空间很有意思,它们把颜色分解成加值的色调和饱和度组件或亮度组件。人类用这种方式来描述颜色会
更加自然。
'''
import numpy as np
import cv2 as cv
import time

#为了获取视频,创建一个 VideoCapture 对象。它参数可以是设备的索引号,或者是一个视频文件。设备索引号就是在
#指定要使用的摄像头。一般的笔记本电脑都有内置摄像头。所以参数就是 0。你可以通过设置成 1 或者其他的来选择别的摄像头。
cap = cv.VideoCapture(0)
#根据上面的方法设定红色的阈值
lower_red = np.array([71,57,128])
upper_red = np.array([215,179,255])
i=1
#死循环
while(1):
	##摄像头逐帧捕捉,ret是返回状态,frame是视频帧
	ret,frame = cap.read()
	
	'''这一段是为了确认被追踪物体颜色,将被追踪物体(比如农夫山泉红色的瓶盖)放在摄像头下,摄像头一秒钟保存一次
	图像,然后用WIN自带画图工具打开图片,鼠标移动到图像红色瓶盖最亮部分,左下角会显示像素坐标位置如(439,263),
	获取图像该坐标颜色通道值 >>>img[263,439]  array([215, 179, 225], dtype=uint8)。再移动到图像红色瓶盖最暗部分,
	获取颜色通道值。
	time.sleep(1)
	savefile = str(i)+'.jpg'
	i += 1
	cv.imwrite(savefile,frame)
	'''
	#颜色空间转换成HSV
	hsv = cv.cvtColor(frame,cv.COLOR_BGR2HSV)
	
	#根据阈值构建掩膜
	mask = cv.inRange(hsv,lower_red,upper_red)
	
	#对原图像和掩膜进行位运算
	res = cv.bitwise_and(frame,frame,mask = mask)
	
	#显示图像
	cv.imshow('frame',frame)
	cv.imshow('mask',mask)
	cv.imshow('res',res)
	#按q键后退出
	if cv.waitKey(1) & 0xFF == ord('q'):
		break
#释放摄像头
cap.release()
#关闭窗口
cv.destroyAllWindows()

##原始图像
原始图像##掩膜图像
掩膜图像##最后识别出的图像
最后识别出的图像

  • 4
    点赞
  • 42
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值