【问题标题】:How to blackout area outside circle with OpenCV Python?如何使用 OpenCV Python 遮蔽圆圈外的区域?
【发布时间】:2020-08-28 16:02:50
【问题描述】:

我有一张图片,我正在尝试用 opencv 将圆圈外的所有区域涂黑。

Source image

Goal image

【问题讨论】:

标签: python-3.x image opencv image-processing mask


【解决方案1】:

这是 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()

蒙版图片:

结果图片:

【讨论】:

  • 太棒了! :) 效果很好。
  • 我认为 xc 和 yc 交换了。图片是否为正方形并不重要。
  • @nicomp 在两个帐户上都正确。我已经编辑了我的帖子以更正它。
猜你喜欢
  • 2021-03-22
  • 2021-12-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-07-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多