Python を使用して画像内のコーナー ポイントを検出する方法
コンピューター ビジョンでは、コーナー ポイントとは、画像内で局所的に大きな変化があるピクセルを指し、通常はタスクに使用されます。特徴抽出、ターゲット追跡、画像マッチングなど。この記事では、Python で OpenCV ライブラリを使用して画像上のコーナーポイントを検出する方法と、対応するコード例を紹介します。
まず、OpenCV ライブラリがインストールされていることを確認してください。インストールされていない場合は、次のコマンドを使用して pip 経由でインストールできます:
pip install opencv-python
次に、OpenCV の CornerHarris 関数を使用してコーナー検出を行います。この関数は、入力イメージの各ピクセルをコーナー点または非コーナー点としてラベル付けします。以下は簡単なコード例です:
import cv2 import numpy as np # 读取图片 img = cv2.imread('image.jpg') # 将图片转换为灰度图 gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) # 转换为浮点数类型 gray = np.float32(gray) # 进行角点检测 dst = cv2.cornerHarris(gray, 2, 3, 0.04) # 对角点进行标记 dst = cv2.dilate(dst, None) # 设置阈值,筛选出角点 img[dst > 0.01 * dst.max()] = [0, 0, 255] # 显示结果 cv2.imshow('Corner Detection', img) cv2.waitKey(0) cv2.destroyAllWindows()
上の例では、まず cv2.imread 関数を使用して画像を読み取ります。次に、コーナー検出は通常グレースケール画像に対して実行されるため、画像をグレースケール画像に変換します。次に、グレースケール画像を浮動小数点数型に変換し、コーナーハリス関数を使用してコーナー検出を行います。この関数には、入力画像、コーナー検出用の近傍サイズ、ソーベル オペレーターのアパーチャ サイズ、コーナー検出用の自由パラメーターなどのいくつかのパラメーターが必要です。
cornerHarris 関数の出力は、入力画像と同じサイズの浮動小数点型の画像であり、隅のピクセルがマークされます。これらのコーナーをより適切に視覚化するために、拡張には cv2.dilate 関数を使用し、しきい値処理によってコーナー応答値が大きいピクセルをフィルターで除外します。最後に、これらの隅のピクセルを赤でマークします。
最後に、cv2.imshow を使用して結果を表示し、ユーザーが任意のキーを押して cv2.waitKey 関数を介して終了するのを待ちます。完了したら、 cv2.destroyAllWindows 関数を使用してすべてのウィンドウを閉じます。
上記のコードにより、画像の角を検出し、検出結果をウィンドウに表示できます。必要に応じて、cornerHarris 関数のパラメータを調整して、より良い結果を得ることができます。
要約すると、この記事では、Python で OpenCV ライブラリを使用して画像内のコーナーポイントを検出する方法を紹介し、対応するコード例を示します。これらの手順により、コーナー検出機能を迅速に実装し、このテクノロジーを実際のアプリケーションで使用することができます。同時に、ニーズに応じてコードを改善し、より多くのアプリケーション シナリオに適応することもできます。この記事がお役に立てば幸いです!
以上がPython を使用して写真のコーナーポイントを検出する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。