【Python・OpenCV】円を描画するには(cv2.circle)

※当サイトではアフィリエイト広告を利用しています

Python プログラミング 画像処理

【Python・OpenCV】円を描画するには(cv2.circle)

はじめに

OpenCVでは、さまざまな基本的な図形を画像上に描画する関数が用意されています。
その中でもcv2.circle関数は頻繁に使われる関数の1つです。
この関数の利用は、物体検出、注釈付け、合成、GUI作成など、円を描画するシーンは多岐にわたります。

この記事では、OpenCVのcv2.circle関数について、使い方から引数、戻り値までを解説します。

四角形、直線の描画関数の記事もオススメです!
【Python・OpenCV】四角形を描画するには(cv2.rectangle)
【Python・OpenCV】基本図形の一つ、直線の描画について解説(cv2.line)

(広告) OpenCV関連書籍をAmazonで探す

円を描画

cv2.circle関数は、以下のような場面で使用されています。

  1. 物体の検出と強調表示:
    画像や動画から円形の物体を検出した際に、その物体の位置を強調表示するために円を描画します。例えば、ボール検出、円形製品の検査など。
  2. 画像への注釈付け:
    画像の特定の領域に注目させるため、その領域を円で囲むことで強調します。医療画像における病変部位の強調表示などに用いられます。
  3. データ可視化:
    数値データをグラフ化する際、散布図におけるプロットポイントを円で表すために使用されます。

円は基本的な図形でありながら、いろいろな用途があるため、cv2.circle関数は画像処理のさまざまな場面で活用されています。

cv2.circle関数

cv2.circle関数は、指定した中心と半径から成る、単純な円、または塗りつぶされた円を描画します。

cv2.circle関数の引数と戻り値は下の通りです。

cv2.circle(入力画像, center, radius, color[, thickness[, lineType[,shift]]])

引数

名称説明
入力画像(必須)円を描画する画像データ
center(必須)円の中心の座標。(x座標, y座標)の並びのタプルです。
radius(必須)円の半径
color(必須)線の色
thickness(オプション)線の太さ。cv2.FILLEDや負の値を設定すると塗りつぶされた円が描画されます。(1以上、デフォルト:"1")
lineType(オプション線の種類。LineTypesで定義される値を設定します。(デフォルト:cv.2LINE_8)
shift(オプション座標の小数ビット数(デフォルト:"0")

引数のlineTypeはLineTypesに示す3種類のいずれかとなります。デフォルトはcv2.LINE_8です。

線の種類説明
cv2.LINE_44 連結
cv2.LINE_88 連結(デフォルト)
cv2.LINE_AAアンチエイリアス処理された線

戻り値

入力画像に円が描画された状態の画像データが返されます。

使い方

以下にサンプルコードを示します。

import cv2
import numpy as np

# 空の画像を作成
image = np.zeros((500, 500, 3), dtype=np.uint8)

# 中心座標(250, 250)、半径150の赤い円を描画
cv2.circle(image, (250, 250), 150, (0, 0, 255), -1)

# 中心座標(125, 375)、半径50の緑の円を描画(線の太さ5)
cv2.circle(image, (125, 375), 50, (0, 255, 0), 5)

# 結果を表示
cv2.imshow('cv2.circle: codevace.com', image)
# 何かのキーが押されたらウィンドウを閉じる
cv2.waitKey(0)
cv2.destroyAllWindows()

このサンプルコードでは、まず500x500ピクセルの空の画像を作成しています。
次に、(250, 250)を中心とする半径150の赤い塗りつぶし円と、(125, 375)を中心とする半径50の緑の線画の円を描画しています。
最後に、結果の画像を表示しています。

おわりに

cv2.circle関数を使えば、簡単に画像上に円を描画することができます。中心座標と半径、色や線の太さを指定することで、さまざまな円を描画できます。このように、OpenCVを使えば画像処理がとてもシンプルに行えるようになります。画像処理の基本となる関数を活用して、さらに高度な処理を行うことができます。

ご質問や取り上げて欲しい内容などがありましたら、コメントをお願いします。
最後までご覧いただきありがとうございました。

参考リンク

■(広告)OpenCVの参考書としてどうぞ!■

-Python, プログラミング, 画像処理
-