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

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) なので白色になります。

実行結果

上記のコードを実行すると、黒い背景の中央に白く塗りつぶされた四角形が表示されます。

OpenCVのfillPoly()関数を使って塗りつぶしポリゴンを描画する方法

  1. PythonとOpenCVを使って画像内の円を検出する方法

    OpenCVはPython向けにcv2ライブラリを提供しており、コンピュータビジョンにおけるさまざまな形状解析に活用できます。本記事では、OpenCVを使って画像の中から「円」を検出する方法を解説します。円の検出にはcv2.HoughCircles()関数を使用します。この関数は、ハフ変換(Hough Transform)を用いてグレースケール画像から円を検出するものです。以下の例では、入力画像を読み込んだ後、そのコピーを作成し、ハフ変換を適用することで画像内の円を検出して出力します。構文cv2.HoughCircles(image, method, dp, minDist)各引数の意味は次の

  2. OpenCVを使って画像・動画のエッジを検出するPythonプログラムの書き方

    この記事では、Pythonを使って画像や動画ファイルからエッジ(輪郭)を検出する方法を解説します。エッジ検出には、コンピュータビジョン向けに設計されたオープンソースライブラリ「OpenCV」を使用します。OpenCVはもともとIntelによって開発されたライブラリで、BSDライセンスのもとで無料で利用できます。OpenCVの機能を使うには、pipでインストールを行います。インストール時にNumPyモジュールも自動的にダウンロードされるため、別途用意する必要はありません。sudo pip3 install opencv-python今回の入力には動画ファイルを使用しますが、Webカメラを接続すれ