瞳孔検出の Github コードを見つけました Python と OpenCVを使用した瞳孔検出 は、目の瞳孔を検出する方法を説明していますが、1 つの目だけを説明しています。両目を検出したい。コードから両目の瞳孔を検出する方法を教えてください。
ありがとう
瞳孔検出の Github コードを見つけました Python と OpenCVを使用した瞳孔検出 は、目の瞳孔を検出する方法を説明していますが、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 ステートメントに置き換える必要があります)