OpenCVのerode()関数を使って画像を侵食する方法
本記事では、OpenCVが提供するerode()関数を使って、画像に侵食(エロージョン)処理を適用する方法を解説します。
画像の侵食とは、画像内の白い領域(前景)を縮小させる処理のことです。処理ではカーネル(構造要素)と呼ばれる小さな行列を使用し、カーネル内のピクセルが1つでも0(黒)であれば、そのカーネルに含まれるすべてのピクセルが0に設定されます。これにより、画像中の細かいノイズや小さなオブジェクトが取り除かれ、輪郭が収縮していきます。
なお、侵食処理を適用する際は、対象画像がグレースケール画像であることが前提条件となります。カラー画像の場合は、あらかじめグレースケールへ変換しておきましょう。
元画像

処理の流れ(アルゴリズム)
ステップ1:cv2 をインポートする ステップ2:numpy をインポートする ステップ3:imread() で画像を読み込む ステップ4:numpy の ones を使ってカーネルサイズを定義する ステップ5:画像とカーネルを erode 関数に渡す ステップ6:出力結果を表示する
サンプルコード
import cv2
import numpy as np
image = cv2.imread('testimage.jpg')
kernel = np.ones((7,7), np.uint8)
image = cv2.erode(image, kernel)
cv2.imshow('Eroded Image', image)コードのポイント
- np.ones((7,7), np.uint8):7×7のサイズで、すべての要素が1のカーネルを作成しています。カーネルサイズを大きくすると、侵食の効果が強くなります。
- cv2.erode(image, kernel):第1引数に入力画像、第2引数にカーネルを指定します。必要に応じて反復回数(iterations)も指定できます。
出力結果

実行結果を見ると、元画像と比較して白い領域が縮小され、細部が削り取られていることが確認できます。このようにerode()関数を活用することで、ノイズ除去や小さなオブジェクトの分離など、さまざまな画像処理タスクに応用できます。
-
OpenCVを使って画像・動画のエッジを検出するPythonプログラムの書き方
この記事では、Pythonを使って画像や動画ファイルからエッジ(輪郭)を検出する方法を解説します。エッジ検出には、コンピュータビジョン向けに設計されたオープンソースライブラリ「OpenCV」を使用します。OpenCVはもともとIntelによって開発されたライブラリで、BSDライセンスのもとで無料で利用できます。OpenCVの機能を使うには、pipでインストールを行います。インストール時にNumPyモジュールも自動的にダウンロードされるため、別途用意する必要はありません。sudo pip3 install opencv-python今回の入力には動画ファイルを使用しますが、Webカメラを接続すれ
-
【Python×OpenCV】画像の収縮(エロージョン)と膨張(ダイレーション)の基本を解説
本記事では、PythonのOpenCVモジュールを使って、エロージョン(収縮)やダイレーション(膨張)といったモルフォロジー演算(形態学的処理)を実行する方法を解説します。 OpenCVはコンピュータビジョン向けに設計されたオープンソースのライブラリで、もともとはIntelによって開発されました。BSDライセンスのもとで誰でも無料で利用できます。 OpenCVの機能を使うには、まずpipでインストールしておきましょう。 sudo pip3 install opencv-python エロージョン(収縮)とは?仕組みを解説 エロージョンは、前景オブジェクトの境界を削り取っていく処理です。画像内の