HSV提取图片中的肤色区域的代码
时间: 2024-02-25 10:54:10 浏览: 282
以下是使用 HSV 颜色空间提取皮肤区域的示例代码:
```python
import cv2
import numpy as np
# 读取图片
img = cv2.imread('image.jpg')
# 将 BGR 转换为 HSV 颜色空间
hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)
# 设置低阈值和高阈值,提取肤色区域
lower = np.array([0, 48, 80], dtype=np.uint8)
upper = np.array([20, 255, 255], dtype=np.uint8)
mask = cv2.inRange(hsv, lower, upper)
# 对原始图片和掩膜进行按位与操作,提取肤色区域
res = cv2.bitwise_and(img, img, mask=mask)
# 显示结果
cv2.imshow('Original image', img)
cv2.imshow('Skin area', res)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
在这个代码中,首先读取一张图片,并将其转换到 HSV 颜色空间。接着设置了低阈值和高阈值,这里使用的是经验值,可以根据实际情况进行调整。然后使用 `cv2.inRange` 函数,提取出肤色区域的掩膜。最后,将原始图片和掩膜进行按位与操作,提取出肤色区域,并显示结果。
相关问题
人脸和手掌皮肤HSV范围
人脸和手掌皮肤的颜色范围可以通过在HSV颜色空间中设定一个范围来实现。一般来说,人脸和手掌皮肤的颜色范围可以通过试验和调整来确定。下面是一个示例代码,用于确定人脸和手掌皮肤的颜色范围:
```python
import cv2
import numpy as np
# 读取测试图片
img = cv2.imread("test_image.jpg")
# 将图片转为HSV颜色空间
hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)
# 人脸皮肤颜色范围
face_skin_lower = np.array([0, 20, 70])
face_skin_upper = np.array([20, 255, 255])
# 手掌皮肤颜色范围
hand_skin_lower = np.array([0, 20, 70])
hand_skin_upper = np.array([20, 255, 255])
# 根据颜色范围提取人脸和手掌皮肤
face_skin_mask = cv2.inRange(hsv, face_skin_lower, face_skin_upper)
hand_skin_mask = cv2.inRange(hsv, hand_skin_lower, hand_skin_upper)
# 显示提取结果
cv2.imshow("Face Skin", cv2.bitwise_and(img, img, mask=face_skin_mask))
cv2.imshow("Hand Skin", cv2.bitwise_and(img, img, mask=hand_skin_mask))
cv2.waitKey(0)
cv2.destroyAllWindows()
```
在上面的代码中,我们首先读取了一张测试图片,并将其转为HSV颜色空间。然后,根据实际情况确定了人脸和手掌皮肤的颜色范围,并使用cv2.inRange函数提取了相应的皮肤区域。最后,使用cv2.bitwise_and函数将提取的皮肤区域与原图进行与操作,以显示提取结果。
需要注意的是,上面的代码仅仅是一个示例,实际应用中需要根据具体情况进行调整和优化。同时,由于人的肤色有很大的差异,因此需要根据实际情况确定皮肤颜色的范围。
阅读全文