【问题标题】:How to make a binary mask out of an image with a transparent background?如何从具有透明背景的图像中制作二进制蒙版?
【发布时间】:2020-09-07 02:53:17
【问题描述】:

我有一个基本的 OpenCV 问题。我有一个透明背景的图像,我想创建该图像的二进制蒙版,透明区域为黑色,对象为白色。您能否指导我如何开始这项任务或分享代码 sn-p,这将非常有帮助。 图片是:

我想要实现的是二进制蒙版,透明区域为黑色,对象为白色。 即

提前致谢!

【问题讨论】:

  • 采用 Alpha 通道并应用阈值(在您认为足够透明的任何级别)。

标签: python image opencv image-processing image-segmentation


【解决方案1】:

这是在 Python/OpenCV 中执行此操作的一种方法。

  • 将输入读取为未更改(以保持 Alpha 通道)
  • 提取 Alpha 通道
  • Alpha 通道阈值
  • 保存结果

输入:

import cv2
import numpy as np

# load image with alpha channel
img = cv2.imread('object.png', cv2.IMREAD_UNCHANGED)

# extract alpha channel
alpha = img[:, :, 3]

# threshold alpha channel
alpha = cv2.threshold(alpha, 0, 255, cv2.THRESH_BINARY)[1]

# save output
cv2.imwrite('object_alpha.png', alpha)

# Display various images to see the steps
cv2.imshow('alpha',alpha)
cv2.waitKey(0)
cv2.destroyAllWindows()


结果:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-10-18
    • 2018-02-16
    • 2011-12-05
    • 2023-03-07
    • 2012-07-07
    • 2019-03-10
    • 2011-03-14
    • 1970-01-01
    相关资源
    最近更新 更多