写一段opencv 3 的hsv颜色可调数值
时间: 2023-11-07 11:15:05 浏览: 88
c语言计算颜色HSV值
好的,以下是一个使用 OpenCV 3 进行 HSV 颜色阈值检测并可调数值的示例代码:
```python
import cv2
import numpy as np
# 定义回调函数,用于调整阈值范围
def onTrackbar(val):
# 获取滑动条的值
h_min = cv2.getTrackbarPos('H_min', 'img')
h_max = cv2.getTrackbarPos('H_max', 'img')
s_min = cv2.getTrackbarPos('S_min', 'img')
s_max = cv2.getTrackbarPos('S_max', 'img')
v_min = cv2.getTrackbarPos('V_min', 'img')
v_max = cv2.getTrackbarPos('V_max', 'img')
# 定义要检测的颜色阈值范围
lower_color = np.array([h_min, s_min, v_min])
upper_color = np.array([h_max, s_max, v_max])
# 对图像进行颜色阈值分割
mask = cv2.inRange(hsv_img, lower_color, upper_color)
# 显示分割后的结果
cv2.imshow('mask', mask)
# 读取图像
img = cv2.imread('test.jpg')
# 将图像转换为 HSV 颜色空间
hsv_img = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)
# 定义初始阈值范围
h_min_init = 0
h_max_init = 180
s_min_init = 0
s_max_init = 255
v_min_init = 0
v_max_init = 255
# 创建窗口并添加滑动条
cv2.namedWindow('img')
cv2.createTrackbar('H_min', 'img', h_min_init, 180, onTrackbar)
cv2.createTrackbar('H_max', 'img', h_max_init, 180, onTrackbar)
cv2.createTrackbar('S_min', 'img', s_min_init, 255, onTrackbar)
cv2.createTrackbar('S_max', 'img', s_max_init, 255, onTrackbar)
cv2.createTrackbar('V_min', 'img', v_min_init, 255, onTrackbar)
cv2.createTrackbar('V_max', 'img', v_max_init, 255, onTrackbar)
# 显示原图
cv2.imshow('img', img)
# 进入消息循环
cv2.waitKey(0)
cv2.destroyAllWindows()
```
在这个示例中,我们首先定义了一个回调函数 `onTrackbar()`,用于调整阈值范围。接着,我们使用 `cv2.imread()` 函数读取了一张图像,并使用 `cv2.cvtColor()` 函数将图像转换为了 HSV 颜色空间。然后,我们使用 `cv2.namedWindow()` 和 `cv2.createTrackbar()` 函数创建了一个窗口和多个滑动条,用于调整阈值范围。每当滑动条的值发生变化时,就会调用回调函数 `onTrackbar()`,根据新的阈值范围对图像进行颜色阈值分割,并使用 `cv2.imshow()` 函数显示分割后的结果。
注意,在这个示例中,我们使用了 `cv2.waitKey(0)` 函数,这意味着程序会一直等待用户按下键盘上的任意一个键,直到用户按下键盘后才会继续执行后面的代码。如果你想要程序在一定时间内自动退出,可以使用 `cv2.waitKey()` 函数传入一个参数,例如 `cv2.waitKey(1000)` 表示等待 1000 毫秒后自动退出。
阅读全文