opencv 摄像头bgr怎么识别颜色并选出
时间: 2023-05-25 15:06:43 浏览: 131
可以通过以下步骤使用 OpenCV 识别颜色并选出:
1. 从摄像头中获取 BGR 图像帧
```
import cv2
cap = cv2.VideoCapture(0) # 0 表示第一个摄像头
while True:
ret, frame = cap.read() # 读取摄像头帧
# TODO: 在此处添加对帧的处理代码
cv2.imshow('frame', frame) # 显示帧
if cv2.waitKey(1) & 0xFF == ord('q'): # 按 q 键退出
break
cap.release() # 释放摄像头
cv2.destroyAllWindows() # 关闭所有窗口
```
2. 将 BGR 图像转换为 HSV 图像
```
hsv = cv2.cvtColor(frame, cv2.COLOR_BGR2HSV)
```
3. 使用 inRange 函数提取目标颜色区域
```
import numpy as np
lower_red = np.array([0, 50, 50]) # 目标颜色下界
upper_red = np.array([10, 255, 255]) # 目标颜色上界
mask = cv2.inRange(hsv, lower_red, upper_red) # 提取目标颜色区域
```
4. 对提取的目标颜色区域进行形态学操作(如膨胀/腐蚀等)以去除噪声
```
kernel = np.ones((5,5),np.uint8) # 形态学操作的结构元素
mask = cv2.morphologyEx(mask, cv2.MORPH_CLOSE, kernel) # 闭运算去除噪声
```
5. 使用 findContours 函数查找目标颜色区域中的轮廓,并选择最大的轮廓
```
contours, hierarchy = cv2.findContours(mask, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
if len(contours) > 0:
max_contour = max(contours, key=cv2.contourArea)
# TODO: 在此处添加对最大轮廓的处理代码
```
关于如何处理最大轮廓,可以根据实际需求进行选择,比如可以计算轮廓的中心点、外接矩形等等。以下是一个示例,用矩形框框住最大轮廓并显示出来:
```
x,y,w,h = cv2.boundingRect(max_contour)
cv2.rectangle(frame, (x,y), (x+w,y+h), (0,255,0), 2)
cv2.imshow('frame', frame)
```
阅读全文