PythonとOpenCVを使って画像中のキーポイントを取得する方法

スポンサーリンク

Hey Folks! この記事では、Pythonプログラミング言語のOpenCVライブラリを使用して、画像内のキーポイントを認識する方法を理解します。

OpenCVのキーポイントは,人間の姿勢検出,顔識別,ハンドジェスチャー検出など,様々なコンピュータビジョンアプリケーションで利用されています.

スポンサーリンク

なぜ画像のキーポイントを特定する必要があるのでしょうか?

画像処理を行う場合、コンピュータは画像がどのように変形・回転しても、その中にある同質性を認識できなければなりません。

また、同じカテゴリーに属する写真間の類似性を検出することも必要です。

これは、画像中の重要なポイントを観察することで実現できる。

例えば、人間の顔であれば、目尻、口角、顎、鼻先が重要なポイントになる。

つまり、写真がどんなに変わっても、コンピュータは新しい画像に同じ重要な特徴を発見するはずだという考え方です。

写真が更新されると、コンピュータはあるキーポイントを囲む画素値を調べ、それを認識します。

コード実装

すべてのコンピュータビジョンアプリケーションの基礎となる本質的な概念は、キーポイントの決定です。

この節では、与えられた画像にキーポイントをプロットします。

このために,ORB アルゴリズムを利用します.まず、cv2 ライブラリと cv2 imshow() メソッドをインクルードします。

1
2
from google.colab.patches import cv2_imshow
import cv2

次に、imread()メソッドを使って画像を読み込みます。

今回利用する画像は、色がついています。

そのため、フラグの値を0にすることで白黒に変更することにします。

1
2
img = cv2.imread('sample.jpg',0)
cv2_imshow(img)
orb = cv2.ORB_create(200)

次に、cv2.ORB create() メソッドを使用します。

希望のポイント数として200を渡します。

1
2
keypoint, des = orb.detectAndCompute(img, None)
img_final = cv2.drawKeypoints(img, keypoint, None, flags=cv2.DRAW_MATCHES_FLAGS_DRAW_RICH_KEYPOINTS)

次に, orb.detectAndCompute() を用いて,キーポイントの検出とディスクリプタの計算を行います.最後に、引数として画像が渡されます。

これは、キーポイントと記述子の2つの値を返します。

drawKeypoints()メソッドを使用して、すべてのキーポイントをプロットします。

そして、画像、キーポイント、フラグの値が入力として送信されます。

cv2_imshow(img_final)

最後に、cv2_imshow を使用して、キーポイントをすべて画像にプロットします()。

Loaded Image Keypoints
Final Keypoints Image Output

まとめ

PythonのOpenCVライブラリを使って、画像中のキーポイントを見つける方法を学びました。

楽しんでいただけたでしょうか?

このチュートリアルは気に入りましたか?いずれにせよ、以下のチュートリアルをご覧になることをお勧めします。

  1. ヒストグラムを使った画像の色の可視化 – Python OpenCV
  2. OpenCVを使った図形描画 – 完全なハウツーガイド
  3. OpenCVを使ったPythonのクレジットカードリーダー
  4. Python OpenCV filter2D()関数 – 完全ガイド

お時間を割いていただきありがとうございました! 何か新しいことを学べたなら幸いです!

タイトルとURLをコピーしました