3

私はopencvとpythonの初心者で、画像内の顔のキーポイントと記述子を収集しようとしています.

HAAR カスケード分類子と正面顔テンプレートを使用して、画像内の顔を探しています。HAAR カスケードは、画像内の顔をマークする座標のリストを提供します。cv2.surf()マスクされた領域内のキーポイントと記述子を抽出するために使用できるように、これらの座標で「マスク」を生成したいと考えています。

マスクの作り方がわかりません。

作業の例として、この写真を試してください。

これまでのコードは次のとおりです。

import cv2
import numpy as np

# Load image and convert to grayscale
img = cv2.imread('testPhoto.jpg')
imgg = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

# Look for faces in the image
cascade = cv2.CascadeClassifier('haarcascade_frontalface_alt.xml')
faceRegions = cascade.detectMultiScale(imgg)

この後、 を使用してマスクで SURF 抽出を行いたいと思いfaceRegionsます。次faceRegionsのように見えるとします。

array([[488, 163,  91,  91],
       [357, 184,  93,  93],
       [154,  78, 107, 107]], dtype=int32)

3 つの顔が見つかったimggので、特定の幅と高さで特定の場所に 3 つの個別のマスクを作成したいと考えています。そしてcv2.surf()、マスクされた領域だけを見てください。どうやってやるの?

4

1 に答える 1

4

faceRegions得られた は面の を示しますx,y,width,height。したがって、これらの座標を使用して ROI (関心領域) を設定し、その四角形を画像として SURF 関数に送信するだけです。

例:

face1 = imgg[y:y+height, x:x+width]

face1これで、完全なイメージを渡す代わりに、これを cv2.SURF() に渡すことができます。

于 2013-05-30T04:54:25.190 に答える