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

【OpenCV】copyMakeBorder()で画像の周囲に境界線を描画する方法

本記事では、PythonのOpenCVライブラリを使って、画像の周囲に境界線(ボーダー)を描画する方法を解説します。境界線の追加には、OpenCVが提供する cv2.copyMakeBorder() メソッドを使用します。

copyMakeBorder()メソッドとは

cv2.copyMakeBorder() は、画像の上下左右に任意の幅の枠(境界線)を追加するための関数です。主な引数は以下のとおりです。

  • src:元となる画像
  • top / bottom / left / right:それぞれ上下左右に追加する境界線の幅(ピクセル数)
  • borderType:境界線の種類(例:cv2.BORDER_CONSTANT など)

処理の流れ(アルゴリズム)

ステップ1:cv2をインポートする。
ステップ2:画像を読み込む。
ステップ3:cv2.copyMakeBorder()メソッドを呼び出す。
ステップ4:結果を表示する。

サンプルコード

import cv2

image = cv2.imread('testimage.jpg')
image = cv2.copyMakeBorder(image, 10, 10, 10, 10, cv2.BORDER_CONSTANT)
cv2.imshow('Border', image)
cv2.waitKey(0)
cv2.destroyAllWindows()

このコードでは、読み込んだ画像「testimage.jpg」の上下左右すべてに10ピクセル幅の境界線を追加しています。borderTypecv2.BORDER_CONSTANT を指定すると、単色(デフォルトでは黒)で塗りつぶされた枠が追加されます。

実行結果

【OpenCV】copyMakeBorder()で画像の周囲に境界線を描画する方法

主なborderTypeの種類

copyMakeBorder() では、用途に応じてさまざまな境界線スタイルを選択できます。

  • cv2.BORDER_CONSTANT:一定の色で塗りつぶされた枠を追加
  • cv2.BORDER_REFLECT:端のピクセルを軸に鏡のように反転させた枠を追加(fedcba|abcdefgh|hgfedcb)
  • cv2.BORDER_REPLICATE:端の行・列を複製した枠を追加(aaaaaa|abcdefgh|hhhhhhh)
  • cv2.BORDER_WRAP:反対側のピクセルを折り返して配置(cdefgh|abcdefgh|abcdefg)

なお、cv2.imshow() でウィンドウを表示したままにするには cv2.waitKey() の呼び出しが必要です。キー入力後にウィンドウを閉じる場合は cv2.destroyAllWindows() を組み合わせるとよいでしょう。

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

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

  2. Python・OpenCVでヒストグラム平坦化を実装する方法|cv2.equalizeHist()の使い方

    ヒストグラム平坦化(Histogram Equalization)とは ヒストグラム平坦化は、画像処理において画像のヒストグラムを利用してコントラストを調整する手法です。 この手法は、多くの画像の全体的なコントラストを向上させる効果があります。特に、画像内の有効なデータが近いコントラスト値で表現されている場合に威力を発揮します。この調整を行うことで、輝度値がヒストグラム上により均等に分布するようになり、局所的にコントラストが低い領域でも高いコントラストを得られるようになります。 OpenCVの cv2.equalizeHist() 関数 OpenCVには、この処理を実行するための関数 cv2