Evision による画像処理
Mix.install([
{:req, "~> 0.5"},
{:evision, "~> 0.2"},
{:kino, "~> 0.14"},
{:nx, "~> 0.8"}
])
画像のダウンロード、表示
img =
"https://www.elixirconf.eu/assets/images/ryo-wakabayashi.jpg"
|> Req.get!()
|> Map.get(:body)
|> Evision.imdecode(Evision.Constant.cv_IMREAD_COLOR())
|> dbg()
リサイズ
img
|> Evision.resize({600, 400})
グレースケール
img
|> Evision.cvtColor(Evision.Constant.cv_COLOR_BGR2GRAY())
ぼかし
img
|> Evision.blur({15, 15})
図形描画
img
# 四角形
|> Evision.rectangle(
# 左上{x, y}
{150, 120},
# 右下{x, y}
{225, 320},
# 色{R, G, B}
{0, 0, 255},
# 線の太さ
thickness: 12,
# 線の引き方(角がギザギザになる)
lineType: Evision.Constant.cv_LINE_4()
)
文字描画
img
|> Evision.putText(
# 文字列
"Ryo",
# 左下{x, y}
{200, 350},
# フォント種類
Evision.Constant.cv_FONT_HERSHEY_SIMPLEX(),
# フォントサイズ
2.5,
# 文字色
{0, 0, 255},
# 文字太さ
thickness: 5
)
一連処理
img
# リサイズ
|> Evision.resize({600, 400})
# グレースケール
|> Evision.cvtColor(Evision.Constant.cv_COLOR_BGR2GRAY())
# ぼかし
|> Evision.blur({15, 15})
# 四角形
|> Evision.rectangle(
# 左上{x, y}
{150, 120},
# 右下{x, y}
{225, 320},
# 色{R, G, B}
{0, 0, 255},
# 線の太さ
thickness: 12,
# 線の引き方(角がギザギザになる)
lineType: Evision.Constant.cv_LINE_4()
)
# 文字
|> Evision.putText(
# 文字列
"Ryo",
# 左下{x, y}
{250, 200},
# フォント種類
Evision.Constant.cv_FONT_HERSHEY_SIMPLEX(),
# フォントサイズ
2.5,
# 文字色
{0, 0, 255},
# 文字太さ
thickness: 5
)
|> dbg()