파이썬을 이용한 opencv에서의 색 영역설정에 대한 질문

조회수 676회
import cv2 as cv

cap = cv.VideoCapture(0)

while True:

    ret,img_color = cap.read()

    img_hsv = cv.cvtColor(img_color, cv.COLOR_BGR2HSV)

    hue_blue = 120
    lower_blue = (hue_blue-20, 150, 0)
    upper_blue = (hue_blue+20, 255, 255)
    img_mask = cv.inRange(img_hsv, lower_blue, upper_blue)

    kernel = cv.getStructuringElement(cv.MORPH_RECT, (5, 5))
    img_mask = cv.morphologyEx(img_mask, cv.MORPH_DILATE, kernel, iterations = 3)

    nlabels, labels, stats, centroids = cv.connectedComponentsWithStats(img_mask)

    max = -1
    max_index = -1

    for i in range(nlabels):

        if i < 1:
            continue

        area = stats[i, cv.CC_STAT_AREA]

        if area > max:
            max = area
            max_index = i

            if (area > 1000):
                print('ok')


    cv.imshow('Blue', img_mask)
    cv.imshow('Result', img_color)

    key = cv.waitKey(20)
    if key == 27:
        break

다음과 같은 코드를 통해서 일정 영역이상의 파란색이 검출되면 ok라는 문구를 띄우고 있습니다. 현재는 멈춤없이 계속 ok가 프린트되는데 한번 검출하면 다시 초기상태로 돌아가서 새로운 파란색이 검출되면 다시 ok가 뜨도록 하고 싶습니다. 이코드에서 초기화를 하려면 무슨 코드를 추가해야하는지 모르겠습니다. 또한 색영역 검출시 위에 쓴 if(area>1000)을 사용하는게 맞는지도 조언해주시면 감사하겠습니다.

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)