2017-01-04 1 views

답변

0

간단히이 두 눈을 찾지 만 만 당신에게 일을주는 것 같습니다, 그 코드를 찾고. 필요에 따라 코드를 수정하여 발견 된 2 개의 얼룩을 추출하는 것뿐입니다. 55-72 행은 후보 풀을 일정 개수의 방울 (가능한 학생)에서 1 개까지 정리하는 곳입니다.

"if len (contours)> = 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] 

이 당신의 두 눈 모양까지 당신을 얻을 것이다, 당신은 여전히 ​​각 BLOB에 대한 그리기 원을 추가해야합니다 센터. (당신은 모든 "if len ..."문장을 삭제하고 이것을 while 문으로 대체해야합니다)

+0

1로 변경하면 @SneakyPolarBear C :/Python27/Projects/proj/pupil.py:38 : VisibleDeprecationWarning : 정수 대신 정수가 아닌 숫자를 사용하면 나중에 오류가 발생합니다. pupilFrame = cv2.equalizeHist (frame [y + (h * .25) :(y + h), x (X + w)]) 트레이스 백 마지막 (가장 최근의 콜) 파일 "C : /Python27/Projects/proj/pupil.py"라인 (92)에 (largeBlob)> 0 인 경우 렌 : \t NameError : name 'largeBlob'이 정의되지 않았습니다 – MwarukaSon

+0

파이썬으로 프로그램하지 않으므로 디버깅은 당신에게 달렸습니다.하지만 당신이 나를 이해했다고 생각하지 않습니다. 그래서 제 대답에 추가했습니다. –

관련 문제