python 把图片白色部分变透明_如何将图像区域转换为白色或透明?

我正在尝试将下图中的某些矩形区域转换为白色或透明。3ae9ee566b7e92f18bc6bad5d8e899b5.png

我可以使用以下命令使用ImageMagick进行创建,该命令首先使所需的颜色透明,最后使用“取反”将其余颜色转换为黑色。

convert input.png \

-transparent '#4B8DF8' \

-transparent '#27A9E3' \

-transparent '#2295C9' \

-transparent '#E7191B' \

-transparent '#C91112' \

-transparent '#28B779' \

-transparent '#17A769' \

-transparent '#852B99' \

-transparent '#751E88' \

-transparent '#D84A38' \

-transparent '#B4CEF8' \

-transparent '#17A76A' \

-transparent '#CA1112' \

-transparent '#2296CA' \

-transparent '#DDE8FA' \

-alpha extract -negate out_convert.png

到目前为止,我拥有的Python / Wand脚本是这样的:

from wand.image import Image

with Image(filename='input.png') as img:

img.transparent_color('#4B8DF8', alpha=0.0)

img.transparent_color('#27A9E3', alpha=0.0)

img.transparent_color('#2295C9', alpha=0.0)

img.transparent_color('#E7191B', alpha=0.0)

img.transparent_color('#C91112', alpha=0.0)

img.transparent_color('#28B779', alpha=0.0)

img.transparent_color('#17A769', alpha=0.0)

img.transparent_color('#852B99', alpha=0.0)

img.transparent_color('#751E88', alpha=0.0)

img.transparent_color('#D84A38', alpha=0.0)

img.transparent_color('#B4CEF8', alpha=0.0)

img.transparent_color('#17A76A', alpha=0.0)

img.transparent_color('#CA1112', alpha=0.0)

img.transparent_color('#2296CA', alpha=0.0)

img.transparent_color('#DDE8FA', alpha=0.0)

img.negate()

img.save(filename='out_python.png')

在下面,我显示了我使用convert命令得到的输出(仅黑色和白色)和带有python/wand脚本的输出(除了黑色和白色以外,它还有一些其他颜色)。

c29ef0616dbabc1c18048924bb428ecd.png

为了获得与ImageMagick相同的输出,脚本中缺少什么?Wand是一个很好的python库,还是可以用另一个库完成?

解决方案

您只需在ImageMagick中将图像阈值化,即可将所有颜色(黑色)转换为白色。

convert rectangles.png -threshold 0 rectangles2.png

或者只是将所有颜色变成白色

convert rectangles.png -fill white +opaque white rectangles3.png

或者只是将图像着色为白色

convert rectangles.png -fill white -colorize 100 rectangles4.png

我会误会你的问题吗?

如果您已识别所有颜色,但是在您的代码中它们并未转换为白色,那是因为某些颜色略有不同。因此,只需在第一个-transparent命令之前添加-fuzz XX%。尝试XX = 0%开始并根据需要增加。

加成:

我怀疑这就是您想要的。你近了您只需要添加一些模糊值即可。但是我没有使它透明,而是使用opaque_fill()直接转换为白色。

输入:

997f0e37b65a48077ba8c7e5f5e0eaca.png

from wand.image import Image

from wand.display import display

with Image(filename='color_rectangles.png') as img:

img.opaque_paint(target='#5f8bfc', fill='white', fuzz=0.30*img.quantum_range, invert=False)

img.opaque_paint(target='#43ad49', fill='white', fuzz=0.30*img.quantum_range, invert=False)

img.opaque_paint(target='#831d98', fill='white', fuzz=0.30*img.quantum_range, invert=False)

img.save(filename='color_rectangles_fill_white.png')

display(img)

98e5bebe1c967594ac6efb4abab4dee5.png

请注意,人们可能只使用0.05的quantum_range因子并更改了大多数颜色,但是由于在绘制框时使用了抗锯齿功能,因此您需要尽可能增加它的数量,以在不更改其他颜色的情况下删除轮廓。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值