首页 > 解决方案 > 如何从具有透明背景的图像中制作二进制蒙版?

问题描述

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

具有透明背景的图像

我想要实现的是二进制掩码,透明区域为黑色,对象为白色。IE

图像的二进制掩码

提前致谢!

标签: pythonimageopencvimage-processingimage-segmentation

解决方案


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


结果:

在此处输入图像描述


推荐阅读