背景透過
Mix.install([
{:evision, "~> 0.2"},
{:kino, "~> 0.14"},
{:nx, "~> 0.9"}
])
画像の準備
img_input = Kino.Input.image("IMAGE", format: :png)
bgr_img =
img_input
|> Kino.Input.read()
|> Map.get(:file_ref)
|> Kino.Input.file_path()
|> File.read!()
|> Evision.imdecode(Evision.Constant.cv_IMREAD_COLOR())
|> Evision.Mat.to_nx(Nx.BinaryBackend)
Kino.Image.new(bgr_img)
背景透過
alpha =
bgr_img
|> Nx.reduce_max(axes: [2])
|> Nx.greater(0)
|> Nx.multiply(255)
|> Nx.new_axis(2)
bgra_img =
[bgr_img, alpha]
|> Nx.concatenate(axis: 2)
Kino.Image.new(bgra_img)