最佳答案
这个想法是创建一个黑色蒙版,然后使用cv2.circle()
绘制所需区域以将其裁剪为白色。从那里我们可以将cv2.bitwise_and()
与原始图像和掩模一起使用。要裁剪结果,我们可以在掩模上使用 cv2.boundingRect() 来获取 ROI,然后使用 Numpy 切片来提取结果。在本示例中,我将中心点用作 (335, 245)
。您可以调整圆半径来增大或减小圆的大小。
代码
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/