そこで、顔を追跡する小さなスクリプトを作成し、次に 2 つの目を検索し、次に左右の目をそれぞれ検索しました。
問題は、左右でも両方が重なってしまうことです。
i = Camera().getImage()
face = i.findHaarFeatures("face.xml")
if face != None:
face = face[0].boundingBox()
face = i.crop(face)
twoeyes = face.findHaarFeatures("two_eyes_big.xml")
if twoeyes != None:
righteye = face.findHaarFeatures('right_eye.xml')
lefteye = face.findHaarFeatures('lefteye.xml')
if righteye != None and lefteye != None:
print righteye,lefteye
righteye = righteye[0].draw()
lefteye = lefteye[0].draw()
face.show()
プリントは次のことを示しています。
[SimpleCV.Features.Detection.HaarFeature at (61,67)] [SimpleCV.Features.Detection.HaarFeature at (60,65)]
face.boundingBox(twoeyes) で顔をトリミングしようとしましたが、左と右を検索しましたが、常に (None, None) が表示されます。
また、findHaarFeatures("face.xml") で複数の顔が得られると問題が発生します。リストの最初の顔を選択するだけでこれを克服できますが、最大のものを選択したいと思います。 2 つのフィーチャーのサイズを比較できますか?
最後に、crop と if ステートメント 'something != None' を使用する代わりに、other 内の機能を検索するより良い方法はありますか?
ところで、私はカメラからの生の画像を使用していますが、特徴をよりよく見つけるために、コントラスト、彩度、検出エッジなどで処理する方が良いですか?