0

瞳孔検出の Github コードを見つけました Python と OpenCVを使用した瞳孔検出 は、目の瞳孔を検出する方法を説明していますが、1 つの目だけを説明しています。両目を検出したい。コードから両目の瞳孔を検出する方法を教えてください。

ありがとう

4

1 に答える 1

1

そのコードを簡単に見てみると、両方の目を見つけたように見えますが、片方しか表示されません。必要に応じてコードを変更して、見つかった 1 つではなく 2 つの BLOB を抽出します。行 55 ~ 72 は、候補プールをいくつかのブロブ (可能な瞳孔) から 1 に削減する場所です。

これらの行はすべて、「if len(contours) >= n」は基本的に、まだ複数のブロブがある場合は、1 つを切り出してくださいと言っています。問題は、1 つではなく 2 つの最大のブロブが必要なことです。したがって、これらのチェック ステートメントを書き直して、最大の 2 つのブロブを除くすべてを除外し、それぞれの重心に円を描く必要があります。私が知る限り、他に変更が必要なものはありません。

ここに役立つかもしれないいくつかのサンプルコード(テストされていません)があります。Python の構文がわからず、リンクされたファイルからいくつかのものを変更しただけです:

while len(contours) > 2:
    #find smallest  blob and delete it
    minArea = 1000000  #this should be the dimensions of your image to be safe
    MAindex = 0         #to get the unwanted frame 
    currentIndex = 0 
    for cnt in contours:
        area = cv2.contourArea(cnt)
        if area < minArea:
            minArea = area
            MAindex = currentIndex
        currentIndex = currentIndex + 1

    del contours[MAindex]       #remove the picture frame contour
    del distanceX[MAindex]

これで 2 つの目のブロブができますが、ブロブの中心ごとに円の描画を追加する必要があります。(「if len...」ステートメントをすべて削除し、この while ステートメントに置き換える必要があります)

于 2017-01-05T13:14:32.813 に答える