用opencv库,写一个可以通过调节上下色域,从而显示图像里该色域区域
时间: 2023-11-28 17:49:55 浏览: 63
好的,下面是一个基于 OpenCV 库的 Python 代码,可以通过调节上下色域,从而显示图像里该色域区域:
```python
import cv2
# 读取图像
img = cv2.imread('image.jpg')
# 转换颜色空间为 HSV
hsv_img = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)
# 定义初始的颜色范围(蓝色)
lower_color = (100, 50, 50)
upper_color = (130, 255, 255)
# 创建一个窗口来显示图像
cv2.namedWindow('Image', cv2.WINDOW_NORMAL)
# 创建两个滑动条来调整颜色范围
cv2.createTrackbar('Lower H', 'Image', lower_color[0], 180, lambda x: None)
cv2.createTrackbar('Lower S', 'Image', lower_color[1], 255, lambda x: None)
cv2.createTrackbar('Lower V', 'Image', lower_color[2], 255, lambda x: None)
cv2.createTrackbar('Upper H', 'Image', upper_color[0], 180, lambda x: None)
cv2.createTrackbar('Upper S', 'Image', upper_color[1], 255, lambda x: None)
cv2.createTrackbar('Upper V', 'Image', upper_color[2], 255, lambda x: None)
while True:
# 获取滑动条的值
lower_h = cv2.getTrackbarPos('Lower H', 'Image')
lower_s = cv2.getTrackbarPos('Lower S', 'Image')
lower_v = cv2.getTrackbarPos('Lower V', 'Image')
upper_h = cv2.getTrackbarPos('Upper H', 'Image')
upper_s = cv2.getTrackbarPos('Upper S', 'Image')
upper_v = cv2.getTrackbarPos('Upper V', 'Image')
# 更新颜色范围
lower_color = (lower_h, lower_s, lower_v)
upper_color = (upper_h, upper_s, upper_v)
# 根据颜色范围创建掩码
mask = cv2.inRange(hsv_img, lower_color, upper_color)
# 应用掩码到原始图像上
result = cv2.bitwise_and(img, img, mask=mask)
# 显示结果
cv2.imshow('Image', result)
# 等待退出
if cv2.waitKey(1) & 0xFF == ord('q'):
break
# 释放资源
cv2.destroyAllWindows()
```
这个代码读取一张图像,将其转换成 HSV 颜色空间,并允许通过滑动条来调整颜色范围。在每次滑动条变化时,程序会重新计算掩码(用于过滤出属于颜色范围内的像素),并将其应用到原始图像上。最后,程序会显示结果,并等待用户按下 'q' 键退出。
阅读全文