gpt4 book ai didi

python - 如何从网络摄像头 OpenCV 裁剪圆形图像并删除背景

转载 作者:行者123 更新时间:2023-12-02 16:08:39 27 4
gpt4 key购买 nike

我正在应用过滤器。通过使用 OpenCv 实时网络摄像头打开,它检测面部并应用过滤器。但我想将脸部裁剪成圆形并删除额外的背景并保存图像。

例如:

enter image description here

到这个enter image description here

我如何在python中实现?

最佳答案

想法是创建一个黑色蒙版,然后使用 cv2.circle() 绘制所需区域以白色裁剪。 .从那里我们可以使用cv2.bitwise_and()带有原始图像和蒙版。要裁剪结果,我们可以使用 cv2.boundingRect()在掩码上获取 ROI,然后使用 Numpy 切片提取结果。对于这个例子,我使用中心点作为 (335, 245) .您可以调整圆半径以增加或减小圆的大小。

enter image description here

代码

import cv2
import numpy as np

# Create mask and draw circle onto mask
image = cv2.imread('1.jpg')
mask = np.zeros(image.shape, dtype=np.uint8)
x,y = 335, 245
cv2.circle(mask, (x,y), 110, (255,255,255), -1)

# Bitwise-and for ROI
ROI = cv2.bitwise_and(image, mask)

# Crop mask and turn background white
mask = cv2.cvtColor(mask, cv2.COLOR_BGR2GRAY)
x,y,w,h = cv2.boundingRect(mask)
result = ROI[y:y+h,x:x+w]
mask = mask[y:y+h,x:x+w]
result[mask==0] = (255,255,255)

cv2.imshow('result', result)
cv2.waitKey()

关于python - 如何从网络摄像头 OpenCV 裁剪圆形图像并删除背景,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60118622/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com