편집 기록

편집 기록
  • 프로필 nowp님의 편집
    날짜2021.03.29

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


    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)을 사용하는게 맞는지도 조언해주시면 감사하겠습니다.

  • 프로필 알 수 없는 사용자님의 편집
    날짜2021.03.29

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


    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)을 사용하는게 맞는지도 조언해주시면 감사하겠습니다.