Kino.Input.image
Mix.install([
{:nx, "~> 0.9"},
{:evision, "~> 0.2"},
{:kino, "~> 0.14"}
])
画像選択
image_input = Kino.Input.image("IMAGE")
画像表示
image = Kino.Input.read(image_input)
image
|> Map.get(:file_ref)
|> Kino.Input.file_path()
|> File.read!()
|> Nx.from_binary(:u8)
|> Nx.reshape({image.height, image.width, 3})
|> Evision.Mat.from_nx_2d()
|> Evision.cvtColor(Evision.Constant.cv_COLOR_RGB2BGR())
image
|> Map.get(:file_ref)
|> Kino.Input.file_path()
|> File.read!()
|> Nx.from_binary(:u8)
|> Nx.reshape({image.height, image.width, 3})
|> Kino.Image.new()
PNG指定
image_input = Kino.Input.image("IMAGE", format: :png)
image = Kino.Input.read(image_input)
image
|> Map.get(:file_ref)
|> Kino.Input.file_path()
|> File.read!()
|> Evision.imdecode(Evision.Constant.cv_IMREAD_COLOR())
JPEG指定
image_input = Kino.Input.image("IMAGE", format: :jpeg)
image_input
|> Kino.Input.read()
|> Map.get(:file_ref)
|> Kino.Input.file_path()
|> File.read!()
|> Evision.imdecode(Evision.Constant.cv_IMREAD_COLOR())
リサイズ
image_input = Kino.Input.image("IMAGE", format: :png, size: {200, 500}, fit: :contain)
image_input = Kino.Input.image("IMAGE", format: :png, size: {200, 500}, fit: :match)
image_input = Kino.Input.image("IMAGE", format: :png, size: {200, 500}, fit: :pad)
image_input = Kino.Input.image("IMAGE", format: :png, size: {200, 500}, fit: :crop)
ダウンロード
Kino.Download.new(
fn ->
image_input
|> Kino.Input.read()
|> Map.get(:file_ref)
|> Kino.Input.file_path()
|> File.read!()
end,
filename: "resized.png"
)