要提取黑色、白色、蓝色、青色 、绿色、黄色、红色的代码
时间: 2023-07-03 22:14:18 浏览: 296
颜色代码提取器
下面是使用OpenCV和Python实现提取黑色、白色、蓝色、青色、绿色、黄色和红色的代码示例:
```python
import cv2
import numpy as np
# 读取图像
img = cv2.imread('test.jpg')
# 转换颜色空间为HSV
hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)
# 定义黑色的HSV范围
lower_black = np.array([0, 0, 0])
upper_black = np.array([180, 255, 46])
# 定义白色的HSV范围
lower_white = np.array([0, 0, 221])
upper_white = np.array([180, 30, 255])
# 定义蓝色的HSV范围
lower_blue = np.array([100, 43, 46])
upper_blue = np.array([124, 255, 255])
# 定义青色的HSV范围
lower_cyan = np.array([78, 43, 46])
upper_cyan = np.array([99, 255, 255])
# 定义绿色的HSV范围
lower_green = np.array([35, 43, 46])
upper_green = np.array([77, 255, 255])
# 定义黄色的HSV范围
lower_yellow = np.array([25, 43, 46])
upper_yellow = np.array([34, 255, 255])
# 定义红色的HSV范围
lower_red = np.array([0, 43, 46])
upper_red = np.array([10, 255, 255])
lower_red2 = np.array([156, 43, 46])
upper_red2 = np.array([180, 255, 255])
# 提取黑色区域
mask_black = cv2.inRange(hsv, lower_black, upper_black)
res_black = cv2.bitwise_and(img, img, mask=mask_black)
# 提取白色区域
mask_white = cv2.inRange(hsv, lower_white, upper_white)
res_white = cv2.bitwise_and(img, img, mask=mask_white)
# 提取蓝色区域
mask_blue = cv2.inRange(hsv, lower_blue, upper_blue)
res_blue = cv2.bitwise_and(img, img, mask=mask_blue)
# 提取青色区域
mask_cyan = cv2.inRange(hsv, lower_cyan, upper_cyan)
res_cyan = cv2.bitwise_and(img, img, mask=mask_cyan)
# 提取绿色区域
mask_green = cv2.inRange(hsv, lower_green, upper_green)
res_green = cv2.bitwise_and(img, img, mask=mask_green)
# 提取黄色区域
mask_yellow = cv2.inRange(hsv, lower_yellow, upper_yellow)
res_yellow = cv2.bitwise_and(img, img, mask=mask_yellow)
# 提取红色区域
mask_red = cv2.inRange(hsv, lower_red, upper_red) + cv2.inRange(hsv, lower_red2, upper_red2)
res_red = cv2.bitwise_and(img, img, mask=mask_red)
# 显示结果
cv2.imshow('Original Image', img)
cv2.imshow('Black', res_black)
cv2.imshow('White', res_white)
cv2.imshow('Blue', res_blue)
cv2.imshow('Cyan', res_cyan)
cv2.imshow('Green', res_green)
cv2.imshow('Yellow', res_yellow)
cv2.imshow('Red', res_red)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
在这个示例中,我们首先读取图像,然后将其转换为HSV颜色空间。然后,我们定义了每种颜色的HSV值范围。接下来,我们使用`cv2.inRange()`函数提取每种颜色的像素,并使用`cv2.bitwise_and()`函数将提取的像素与原始图像进行位运算,以获得颜色区域。最后,我们将所有颜色的区域显示在屏幕上。
阅读全文