写一段opencv 3 的hsv颜色阈值检测的代码
时间: 2023-09-30 22:06:06 浏览: 115
好的,以下是一个使用 OpenCV 3 进行 HSV 颜色阈值检测的示例代码:
```python
import cv2
import numpy as np
# 读取图像
img = cv2.imread('test.jpg')
# 将图像转换为 HSV 颜色空间
hsv_img = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)
# 定义要检测的颜色阈值范围
lower_color = np.array([0, 100, 100])
upper_color = np.array([10, 255, 255])
# 对图像进行颜色阈值分割
mask = cv2.inRange(hsv_img, lower_color, upper_color)
# 显示原图和分割后的结果
cv2.imshow('img', img)
cv2.imshow('mask', mask)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
在这个示例中,我们首先使用 `cv2.imread()` 函数读取了一张图像,然后使用 `cv2.cvtColor()` 函数将图像转换为了 HSV 颜色空间。接着,我们使用 `np.array()` 函数定义了要检测的颜色范围,然后使用 `cv2.inRange()` 函数对图像进行颜色阈值分割。最后使用 `cv2.imshow()` 函数显示了原图和分割后的结果。
如果你想检测的颜色不止一种,可以使用 `cv2.bitwise_or()` 函数将多个颜色的分割结果进行合并。以下是一个检测多种颜色的示例代码:
```python
import cv2
import numpy as np
# 读取图像
img = cv2.imread('test.jpg')
# 将图像转换为 HSV 颜色空间
hsv_img = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)
# 定义要检测的颜色阈值范围
lower_red1 = np.array([0, 100, 100])
upper_red1 = np.array([10, 255, 255])
lower_red2 = np.array([160, 100, 100])
upper_red2 = np.array([180, 255, 255])
lower_blue = np.array([100, 100, 100])
upper_blue = np.array([130, 255, 255])
# 对图像进行颜色阈值分割
mask_red1 = cv2.inRange(hsv_img, lower_red1, upper_red1)
mask_red2 = cv2.inRange(hsv_img, lower_red2, upper_red2)
mask_blue = cv2.inRange(hsv_img, lower_blue, upper_blue)
mask_red = cv2.bitwise_or(mask_red1, mask_red2)
# 显示原图和分割后的结果
cv2.imshow('img', img)
cv2.imshow('mask_red', mask_red)
cv2.imshow('mask_blue', mask_blue)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
在这个示例中,我们首先使用 `cv2.imread()` 函数读取了一张图像,然后使用 `cv2.cvtColor()` 函数将图像转换为了 HSV 颜色空间。接着,我们使用 `np.array()` 函数定义了要检测的颜色范围,然后使用 `cv2.inRange()` 函数对图像进行颜色阈值分割。最后使用 `cv2.bitwise_or()` 函数将红色颜色的分割结果进行合并,并使用 `cv2.imshow()` 函数显示了原图和分割后的结果。
阅读全文