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

モブプログラミング

livebooks/mob.livemd

モブプログラミング

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

画像のダウンロード、表示

img =
  "https://www.elixirconf.eu/assets/images/ryo-wakabayashi.png"
  |> Req.get!()
  |> Map.get(:body)
  |> Evision.imdecode(Evision.Constant.cv_IMREAD_COLOR())
# 1

img
# リサイズ
|> Evision.resize({600, 400})
# グレースケール
|> Evision.cvtColor(Evision.Constant.cv_COLOR_BGR2GRAY())
# ぼかし
|> Evision.blur({15, 15})
# 四角形
|> Evision.rectangle(
  # 左上{x, y}
  {150, 10},
  # 右下{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()
# 2

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()
# 3

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()
# 4

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()
# 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()
# 6

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()
# 7

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()
# 8

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()
# 9

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()
# 10

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()