Powered by AppSignal & Oban Pro
Would you like to see your link here? Contact us
Notesclub

背景透過

transparent_black.livemd

背景透過

Mix.install([
  {:evision, "~> 0.1"},
  {:kino, "~> 0.12"},
  {:nx, "~> 0.6"}
])

画像の準備

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)