【Opencv小项目 1】Opencv实现简单颜色识别

该博客介绍了如何使用OpenCV结合BGR和HSV颜色模型进行颜色识别。首先讲解了BGR模型的不足,然后详细阐述了HSV模型,其中H表示色调,S表示饱和度,V表示明度。接着,通过摄像头实时读取视频流,将BGR像素值转换为HSV,依据Hue值进行颜色判断。最后,提供了实现这一功能的代码示例和实际效果。
摘要由CSDN通过智能技术生成

参考

  1. Opencv简单颜色识别 Youtube教学视频
  2. BGR HSV颜色模型

步骤

一、 BGR 和 HSV 颜色模型

BGR Model
BGR模型表示三种颜色通道:红、绿、蓝,采用BGR模型的图像的颜色就是由红绿蓝三种颜色加权和混合而成。
此类模型的缺点显而易见,就是很难去表达一种颜色。比如你修改了如下BGR中的B值,间接地, G和R通道的颜色也会被改变掉。
在这里插入图片描述
在这里插入图片描述

HSV Model
H表示Hue颜色;S表示Saturation饱和度;V表示Value明度。
简单理解就是
H指定一种颜色,从0到360;
S是白光所占程度,从0到1, 0表示饱和度最高,就是白光最多;
V表示明度,从0到1, 0表示最暗
在这里插入图片描述

二、使用摄像头,利用HSV实现颜色识别

1. 思路
读取摄像头视频流,取窗口中间一点,将其像素值(BGR)转换为HSV,然后根据Hue来简单判断颜色。然后显示到窗口上。

2.代码

import cv2

cap = cv2.VideoCapture(0)
cap.set(cv2.CAP_PROP_FRAME_WIDTH,1080) #set window's width and height
cap.
  • 10
    点赞
  • 105
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
实现简单颜色识别,可以使用OpenCV中的HSV颜色空间。以下是一个简单的示例代码: ```python import cv2 import numpy as np # 定义要识别的颜色范围 lower_range = np.array([30, 50, 50]) upper_range = np.array([70, 255, 255]) # 初始化摄像头 cap = cv2.VideoCapture(0) while True: # 读取摄像头图像 ret, frame = cap.read() # 转换图像到HSV颜色空间 hsv = cv2.cvtColor(frame, cv2.COLOR_BGR2HSV) # 创建掩膜,将HSV图像中在颜色范围内的部分设为白色,其余部分设为黑色 mask = cv2.inRange(hsv, lower_range, upper_range) # 对掩膜进行形态学处理,去除噪声 kernel = np.ones((5, 5), np.uint8) mask = cv2.morphologyEx(mask, cv2.MORPH_OPEN, kernel) # 找到掩膜中的轮廓 contours, _ = cv2.findContours(mask, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE) # 在原图像中画出轮廓 cv2.drawContours(frame, contours, -1, (0, 255, 0), 3) # 显示图像 cv2.imshow('frame', frame) # 按下q键退出程序 if cv2.waitKey(1) == ord('q'): break # 释放摄像头并关闭窗口 cap.release() cv2.destroyAllWindows() ``` 在上面的示例代码中,我们首先定义了要识别的颜色范围,然后初始化摄像头并循环读取摄像头图像。对于每一帧图像,我们首先将其转换到HSV颜色空间,然后创建一个掩膜,将HSV图像中在颜色范围内的部分设为白色,其余部分设为黑色。接着,我们对掩膜进行形态学处理,去除噪声,然后找到掩膜中的轮廓,并在原图像中画出轮廓。最后,我们显示图像,并在按下q键时退出程序。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值