这是我从代码中得到的结果: enter image description here
我已使用轮廓在面部上制作了此蒙版,如代码中所示。
该项目的最终结果是删除该面孔并显示背景我尚未定义。
我的问题是:有什么办法可以用此计数器制作遮罩,以便我可以使用类似from bs4 import BeautifulSoup
的东西在背景遮罩下显示前景吗? (这里的问题是我必须以这种形式将面具作为视频,但我希望它是实时的)
或者也许是另一种方式,我可以以某种方式删除计数器中(或下方)的帧像素吗?
这是我的代码:
cv2.imshow('My Image',cmb(foreground,background,mask))
答案 0 :(得分:1)
假设您的掩码是二进制掩码,则可以执行以下操作:
def cmb(foreground,background,mask):
result = background.copy()
result[mask] = foreground[mask]
return result
我没有测试此代码,但我希望这个想法能够解决。您将背景遮罩反转,而将前景遮罩保留下来。您将其应用到每个帧和蒙版上,就得到了蒙版图像。
编辑: 根据评论调整代码。当然,该解决方案比我最初写的要清晰得多。但是,功能保持不变。
答案 1 :(得分:0)
这是我从帧中删除人脸的解决方案(速度更快,但再次感谢@meetaig的帮助)
mask = np.zeros(frame.shape,dtype='uint8')
mask = cv2.drawContours(mask, [facelineHull], -1, (255 , 255 , 255),thickness=cv2.FILLED)
mask = cv2.bitwise_not(mask)
img2gray = cv2.cvtColor(mask,cv2.COLOR_BGR2GRAY)
ret, mask = cv2.threshold(img2gray, 10, 255, cv2.THRESH_BINARY)
result= cv2.bitwise_and(frame,frame,mask=mask)
如果我现在显示结果,它将起作用。
cv2.imshow("Frame", result)