やましなぶろぐ

numpyの画像配列に与えられた2点間の線を引く

2点の情報から対象の座標と強さを取得できるskimage.draw.line_aa

真っ黒な画像に対して2点の座標間の先を引いてみます

🕒 Last mod: 2020-10-30


1. numpyの画像配列に与えられた2点間の線を引く

2点の座標が与えられてその2点の間に線を引きたい。

実現したいことは簡単な内容だけれども実際にどのようなコードになるのかさっとはわからなかったので調べました。

情報源はこちらになります。

参考にさせて頂いたサイト

"skimage.draw.line_aa"を使用する方法が紹介されています。

使用するモジュール

この記事では実際にコーディングして試してみました。

2. コード

実際のコードになります。

真っ黒な画像と2点の座標を用意して2点の間に白線を引いてみました。

linetoimgarray.py
import numpy as np
from PIL import Image
from skimage.draw import line_aa

imgarray = np.zeros(
    (100, 100),
    np.uint8,
)

point1 = (10, 20)
point2 = (80, 30)

rr, cc, val = line_aa(
    point1[0],
    point1[1],
    point2[0],
    point2[1],
)
imgarray[rr, cc] = val * 255

img = Image.fromarray(imgarray)
img.save("linetoarray.jpg")

作成された画像が下記。

linetoarray.jpg
linetoarray.jpg

3. まとめ

"skimage.draw.line_aa"はとても便利で私が対応したいことを簡単に実現してくれました。

今回は以上です。