写一段基于OpenCV识别红色深浅的代码
时间: 2023-12-10 22:39:55 浏览: 108
以下是基于OpenCV识别红色深浅的代码:
```python
import cv2
import numpy as np
# 读取图片
img = cv2.imread('test.jpg')
# 转换颜色空间为HSV
hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)
# 设置红色范围
lower_red = np.array([0, 50, 50])
upper_red = np.array([10, 255, 255])
# 根据设置的红色范围,提取红色部分
mask1 = cv2.inRange(hsv, lower_red, upper_red)
# 设置另一种红色范围
lower_red = np.array([170, 50, 50])
upper_red = np.array([180, 255, 255])
# 根据设置的另一种红色范围,提取红色部分
mask2 = cv2.inRange(hsv, lower_red, upper_red)
# 合并两个红色部分
mask = mask1 + mask2
# 通过腐蚀和膨胀消除噪点
kernel = np.ones((5,5),np.uint8)
mask = cv2.erode(mask, kernel, iterations = 1)
mask = cv2.dilate(mask, kernel, iterations = 1)
# 计算红色像素数量
red_pixels = cv2.countNonZero(mask)
# 计算红色占比
total_pixels = img.shape[0] * img.shape[1]
red_ratio = red_pixels / total_pixels
# 根据红色占比判断红色深浅
if red_ratio >= 0.05:
print("深红色")
else:
print("浅红色")
```
代码中,我们首先读取一张图片,然后将图片转换到HSV颜色空间。接着,我们设置了两个红色范围,分别提取出红色部分,并将其合并。然后通过腐蚀和膨胀操作消除噪点。最后,我们计算红色像素数量和红色占比,并根据红色占比判断红色深浅。
阅读全文