【问题标题】:How to get content of an image from a pattern?如何从模式中获取图像的内容?
【发布时间】:2016-06-03 08:35:18
【问题描述】:

我需要从两张图片的绝对差异中得到一个人的形状,然后将其转换为位图以去除所有黑色像素。给定这些图像,我怎样才能得到这个人的原始身体

原始图像,绝对差异图像,去除黑色像素(位图)

【问题讨论】:

  • 至少对我来说,你在问什么非常不清楚。您是如何仅从单个起始图像生成差异图像的? “将其转换为位图以删除所有黑色像素”是什么意思。肯定已经是位图了吧?你想要什么结果?我已经可以在第二张和第三张图中看到身体的形状了?
  • 基本上,我需要删除背景。是的,身体的形状在第二张和第三张图像中,但不是原始颜色。知道怎么做吗?
  • 那么将第二张图片中所有非黑色的像素(即蓝色和青色的像素)都改成白色,然后将得到的图片作为第一张图片的透明度?这将只留下有颜色的人,在透明背景上。

标签: c# image-processing imagemagick emgucv mask


【解决方案1】:

我不太清楚你要做什么,但不管是什么,我认为这是一个两步过程,会像这样......

首先,制作一个黑白的蒙版图像。在您希望原始图像显示的地方将其设为白色,在您不希望显示的地方设为黑色。不确定要从哪张图像开始,但让我们以第二张带有黑色、白色、青色和蓝色的图像为例。让我们把它变成纯黑色和白色。您可以选择不同的方法,但我只会设置阈值:

convert 2.jpg -threshold 50% mask.png

现在,第二步。应用蒙版作为第一张彩色原始图像的不透明度/Alpha 通道:

convert 1.jpg mask.png -compose copy-opacity -composite result.png

由于女士的脸不见了,因此您生成面具的方式存在一些问题。我猜这张脸在色调上与背景太相似了。考虑查看形态学“关闭漏洞”,遵循以下思路:

convert 2.jpg -threshold 50% mask.png
convert outline.png -morphology Close Disk:12 mask.png
convert 1.jpg mask.png -compose copy-opacity -composite result.png

【讨论】:

  • 我想从第二张图片开始,但是那里还有另一个问题。当我得到第一张图像和背景的绝对差异并应用阈值时,不包括女人的脸。谢谢!
  • 面部丢失的事实是由于您计算了差异图像,因为它已经是黑色的。
  • 我不知道 - 我不知道你是如何制作不同图像的 - 你没有展示你与第一张图像不同的地方,或者如何。
  • 图像的差异来自 EmguCV 的 AbsDiff 函数,通过将第一张图像减去背景图像
  • 好的,但是我看不到背景图片。
猜你喜欢
  • 2021-10-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-01-30
  • 2011-03-28
  • 1970-01-01
  • 1970-01-01
  • 2011-10-24
相关资源
最近更新 更多