python如何实现图像中红色识别及红色的占比代码
时间: 2023-06-14 21:08:22 浏览: 233
机器学习大作业-图像识别-安检识别+实验报告+源代码+文档说明+YOLOv5,python实现
5星 · 资源好评率100%
可以使用OpenCV库来实现图像中红色的识别和占比计算。以下是一个简单的示例代码:
```python
import cv2
import numpy as np
# 读取图像
img = cv2.imread('image.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
# 计算红色像素点数量
red_pixel_count = cv2.countNonZero(mask)
# 计算红色像素点占比
total_pixel_count = img.shape[0] * img.shape[1]
red_pixel_ratio = red_pixel_count / total_pixel_count
# 显示图像和掩码
cv2.imshow('Original Image', img)
cv2.imshow('Mask', mask)
cv2.waitKey(0)
cv2.destroyAllWindows()
print('Red pixel count:', red_pixel_count)
print('Red pixel ratio:', red_pixel_ratio)
```
以上代码中,我们首先读取一张图像,然后将其颜色空间转换为HSV,接着定义红色区间的阈值范围,并使用`cv2.inRange()`函数得到红色区域的掩码。最后,我们将两个红色区间的掩码合并,并使用`cv2.countNonZero()`函数计算红色像素点数量和总像素点数量,从而得到红色像素点占比。
阅读全文