2017-01-04 3 views
0

Я нашел коды Github для обнаружения ученика Pupil Detection with Python and OpenCV, который объясняет, как обнаружить зрачок, но объяснить только один глаз. Я хотел бы обнаружить оба глаза. Пожалуйста, дайте мне идеи, как я могу обнаружить оба зрачка из кодов.Как обнаружить оба глаза Ученик с использованием Python и OpenCV

Благодаря

ответ

0

Кратко глядя на этот код, он выглядит, как он находит оба глаза, но только тогда дает один. Просто измените код по мере необходимости, чтобы извлечь два найденных капли, а не только один. линии 55-72, где он обрезает ваш пул кандидатов из некоторого количества капель (возможных зрачков) до 1.

Все эти строки: «если len (контуры)> = n» в основном говорят, если вы все еще есть более одного блоба, попробуйте вырезать один. Дело в том, что вы хотите, чтобы ДВЕ самые большие капли, а не одно. Итак, вам нужно переписать эти контрольные утверждения таким образом, чтобы вы удалили все, кроме двух самых больших капель, а затем нарисуйте круги на каждом из своих центроидов. Насколько я могу судить, ничто другое не нуждается в модификации.

вот несколько примеров кода (непроверенных), которые могут помочь. я не знаю синтаксис питона и только изменил некоторые вещи из вашего связанного файла:

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] 

Это приведет вас вниз к вашим двум глазам капли, то вам все равно нужно добавить круг рисунка для каждого сгустка центр. (вам нужно удалить все операторы «if len ...» и заменить их на этот оператор while)

+0

Когда я сменил на 1. Я получаю эту ошибку: @SneakyPolarBear C:/Python27/Projects/proj/pupil.py:38: VisibleDeprecationWarning: использование нецелого числа вместо целого числа приведет к ошибке в будущем pupilFrame = cv2.equalizeHist (frame [y + (h * .25) :(y + h), x : (х + ш)]) Traceback (самый последний вызов последнего): Файл "C: /Python27/Projects/proj/pupil.py", строка 92, в , если Len (largeBlob)> 0: \t NameError: name 'largeBlob' не определен – MwarukaSon

+0

Я не программирую на python, поэтому отладка зависит от вас, но я не думаю, что вы меня поняли, поэтому я добавил к своему ответу –

 Смежные вопросы

  • Нет связанных вопросов^_^