OpenCVのfillPoly()関数を使って塗りつぶしポリゴンを描画する方法
この記事では、OpenCVが提供する fillPoly() 関数を使用して、塗りつぶされた多角形(ポリゴン)を画像上に描画する方法を解説します。fillPoly() 関数は、対象となる画像と、多角形の頂点座標を引数として受け取り、指定された色で内部を塗りつぶした形状を描画します。
処理の流れ(アルゴリズム)
ステップ1:cv2 と numpy をインポートする。 ステップ2:多角形の頂点座標を定義する。 ステップ3:np.zeros() を使って描画用の画像(キャンバス)を作成する。 ステップ4:fillPoly() 関数を使って多角形を描画する。 ステップ5:結果を画面に表示する。
サンプルコード
以下は、200×200ピクセルの黒いキャンバス上に、白色で塗りつぶされた正方形(4頂点のポリゴン)を描画するPythonコードの例です。
import cv2
import numpy as np
# 多角形の頂点座標を定義
contours = np.array([[50,50], [50,150], [150,150], [150,50]])
# 200x200 の黒い画像(キャンバス)を作成
image = np.zeros((200,200))
# fillPoly() で多角形を白色(255,255,255)で塗りつぶす
cv2.fillPoly(image, pts = [contours], color =(255,255,255))
# 結果を表示
cv2.imshow("filledPolygon", image)
cv2.waitKey(0)
cv2.destroyAllWindows()コードのポイント
- 頂点の定義:
np.array()を使って、各頂点の (x, y) 座標をリストとして渡します。複数の多角形を一度に描画することも可能です。 - キャンバスの作成:
np.zeros((200,200))により、すべてのピクセル値が0(黒)の画像を生成しています。カラー画像にしたい場合は(200,200,3)のように3チャンネルを指定します。 - 塗りつぶしの色:
color引数にはBGR形式で色を指定します。ここでは(255,255,255)なので白色になります。
実行結果
上記のコードを実行すると、黒い背景の中央に白く塗りつぶされた四角形が表示されます。

-
PythonとOpenCVを使って画像内の円を検出する方法
OpenCVはPython向けにcv2ライブラリを提供しており、コンピュータビジョンにおけるさまざまな形状解析に活用できます。本記事では、OpenCVを使って画像の中から「円」を検出する方法を解説します。円の検出にはcv2.HoughCircles()関数を使用します。この関数は、ハフ変換(Hough Transform)を用いてグレースケール画像から円を検出するものです。以下の例では、入力画像を読み込んだ後、そのコピーを作成し、ハフ変換を適用することで画像内の円を検出して出力します。構文cv2.HoughCircles(image, method, dp, minDist)各引数の意味は次の
-
OpenCVを使って画像・動画のエッジを検出するPythonプログラムの書き方
この記事では、Pythonを使って画像や動画ファイルからエッジ(輪郭)を検出する方法を解説します。エッジ検出には、コンピュータビジョン向けに設計されたオープンソースライブラリ「OpenCV」を使用します。OpenCVはもともとIntelによって開発されたライブラリで、BSDライセンスのもとで無料で利用できます。OpenCVの機能を使うには、pipでインストールを行います。インストール時にNumPyモジュールも自動的にダウンロードされるため、別途用意する必要はありません。sudo pip3 install opencv-python今回の入力には動画ファイルを使用しますが、Webカメラを接続すれ