Python
 Computer >> コンピューター >  >> プログラミング >> Python

MatplotlibとNumPyを使って画像上に円を描く方法

概要

PythonのMatplotlibNumPyを組み合わせると、読み込んだ画像の任意の位置に簡単に円を描画できます。画像処理やアノテーション作成など、さまざまな場面で活用できるテクニックです。


画像に円を描く基本の手順

  • 図(figure)のサイズを設定し、サブプロット間および周囲の余白を調整します。

  • ファイルから画像を読み込み、配列として取得します。

  • NumPyを使って、円を描く位置となるx・y座標のデータポイントを作成します。

  • subplots()メソッドで図とサブプロットを作成します。

  • imshow()メソッドを使い、データを2Dラスタ画像として表示します。

  • axis('off')で軸を非表示にします。

  • add_patch()で現在の軸に円(Circleパッチ)を追加します。

  • show()メソッドで図を画面に表示します。


サンプルコード

import matplotlib.pyplot as plt
import numpy as np
from matplotlib.patches import Circle

plt.rcParams["figure.figsize"] = [7.50, 3.50]
plt.rcParams["figure.autolayout"] = True

img = plt.imread('bird.jpg')

x = np.random.rand(5) * img.shape[1]
y = np.random.rand(5) * img.shape[0]

fig, ax = plt.subplots(1)
ax.imshow(img)
ax.axis('off')

for xx, yy in zip(x, y):
    circ = Circle((xx, yy), 50, color='red')
    ax.add_patch(circ)

plt.show()

コードのポイント

この例では、np.random.rand(5)により0〜1の一様乱数を5つ生成し、それに画像の幅(img.shape[1])や高さ(img.shape[0])を掛けることで、画像サイズ内に収まるランダムな座標を作成しています。その後、zip(x, y)で各座標を取り出し、半径50ピクセルの赤い円を順番に追加していきます。


実行結果

MatplotlibとNumPyを使って画像上に円を描く方法

コードを実行すると、画像上のランダムな5か所に赤い円が描画された図が表示されます。円の色や半径はCircle()の引数で自由に変更できるため、目的に応じてカスタマイズしてください。

  1. Matplotlibでnumpyのdatetime64型の時系列データをプロットする方法

    PythonのMatplotlibを使って時系列データをグラフ化する方法を解説します。日付や時刻のデータ(datetime64型など)は、そのままplot()メソッドに渡すだけで自動的に軸に反映されるため、非常に簡単です。基本的な手順numpyを使ってx(日時)とy(数値)のデータを作成する。plot()メソッドで作成したxとyをプロットする。show()メソッドで図を表示する。サンプルコードimport matplotlib.pyplot as plt import datetime import numpy as np plt.rcParams[figure.figsize] = [7.

  2. Matplotlibを使ってPythonで複数の図を横並びに描画する方法

    Matplotlibで複数の図を並べて描画する手順 PythonのMatplotlibを使えば、subplot()メソッドを活用することで、複数の図を1つのウィンドウ内に横一列に並べて簡単に表示できます。ここでは、同じランダムデータを4種類のカラーマップで可視化する例を紹介します。 具体的には、以下の手順で実装します。 numpyを使ってランダムなデータ(5×5の行列)を作成します。 plt.subplot(nrows, ncols, index)で現在の図にサブプロットを追加します。今回は「nrows=1、ncols=4」のレイアウトで、index=1から順に配置していきます。 imsho