如何使用 OpenCV Python 遮蔽圆圈外的区域?
How to blackout area outside circle with OpenCV Python?
我有一张图片,我正在尝试使用 opencv 将圆圈外的所有区域涂黑。
Source image
Goal image
这是 Python/OpenCV 中的一种方法。
- 读取输入
- 获取尺寸并除以 2 以使用中心和半径
- 在黑色背景上创建一个填充的白色圆圈作为蒙版
- 将蒙版应用于图像
- 保存结果
输入:
import cv2
import numpy as np
# read image
img = cv2.imread('jeep.jpg')
hh, ww = img.shape[:2]
hh2 = hh // 2
ww2 = ww // 2
# define circles
radius = hh2
yc = hh2
xc = ww2
# draw filled circle in white on black background as mask
mask = np.zeros_like(img)
mask = cv2.circle(mask, (xc,yc), radius, (255,255,255), -1)
# apply mask to image
result = cv2.bitwise_and(img, mask)
# save results
cv2.imwrite('jeep_mask.png', mask)
cv2.imwrite('jeep_masked.png', result)
cv2.imshow('image', img)
cv2.imshow('mask', mask)
cv2.imshow('masked image', result)
cv2.waitKey(0)
cv2.destroyAllWindows()
蒙版图片:
结果图片:
我有一张图片,我正在尝试使用 opencv 将圆圈外的所有区域涂黑。
Source image
Goal image
这是 Python/OpenCV 中的一种方法。
- 读取输入
- 获取尺寸并除以 2 以使用中心和半径
- 在黑色背景上创建一个填充的白色圆圈作为蒙版
- 将蒙版应用于图像
- 保存结果
输入:
import cv2
import numpy as np
# read image
img = cv2.imread('jeep.jpg')
hh, ww = img.shape[:2]
hh2 = hh // 2
ww2 = ww // 2
# define circles
radius = hh2
yc = hh2
xc = ww2
# draw filled circle in white on black background as mask
mask = np.zeros_like(img)
mask = cv2.circle(mask, (xc,yc), radius, (255,255,255), -1)
# apply mask to image
result = cv2.bitwise_and(img, mask)
# save results
cv2.imwrite('jeep_mask.png', mask)
cv2.imwrite('jeep_masked.png', result)
cv2.imshow('image', img)
cv2.imshow('mask', mask)
cv2.imshow('masked image', result)
cv2.waitKey(0)
cv2.destroyAllWindows()
蒙版图片:
结果图片: