如何使用OpenCV从图像中正确提取人脸区域二值掩码?
人脸二值掩码提取的OpenCV实现问题
需求
输入一张含人脸的图像,要提取出仅保留人脸区域的二值掩码,属于简单图像分割任务:
- 输入:带人脸的肖像图像
- 预期输出:仅人脸区域为白色、其余区域为黑色的二值图像
我的尝试
原本打算用OpenCV的阈值函数实现,代码如下:
import cv2 import numpy as np image = cv2.imread('input.png') gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY) kernel = np.ones((6, 6), dtype=np.uint8) gray = cv2.blur(gray, (13, 13)) gray = cv2.erode(gray, kernel, 3) _, thres = cv2.threshold(gray, 127, 255, cv2.THRESH_BINARY) cv2.imwrite('result.png', thres)
问题
运行后结果很差:眼部没有被填充成白色,还额外识别出了很多无关的区域。
内容的提问来源于stack exchange,提问作者kodeinoslave
相关产品推荐
相关产品推荐

