본문 바로가기

좌충우돌개발일지

정사각형으로 외곽선 검출

오늘은 너무 피곤해서, 많이 하지는 않았다.

지난번에 contour 검출 이후, 적당한 area 크기를 갖는 contour들을 image에 그리도록 하였다.

contours, hierarchy = cv2.findContours(openedINV.copy(), cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)

mask = np.zeros(image.shape, dtype=np.uint8)
for contour in contours:
    area = cv2.contourArea(contour)
    '''
    권장 사이즈를 측정할 필요 있다. 메이플 스토리의 창모드의 pixel 크기는 유동적으로 조정할 수 있으니, 
    여기서 적당한 보드판의 크기를 유추하여 contour를 검출하면 된다.
    '''
    if 100000 < area :
        x,y,w,h = cv2.boundingRect(contour)
        cv2.rectangle(image, (x,y),(x+w, y+h), (0,255,0), 3)
        # cv2.drawContours(image, [contour], 0, (0,255,0), 3)
        cv2.rectangle(mask,(x,y),(x+w, y+h), (255,255,255), -1)
        print(area)
mask = cv2.bitwise_and(mask, original)

area를 출력하며 적합한 값을 '일단은' 찾았지만, 실제 미니게임이 시작되고 난 이후에 적절하게 크기를 조절해야 한다고 생각한다. 지금은 아무곳에서나 이미지를 긁어왔기 때문에 크기가 제각각이다.

 

이후 mask를 이용해서 board 판을 검출한다.

 

다음은 해당 결과이다.

 

좌측부터 원본, 사각으로 외곽선 검출, 마스크

'좌충우돌개발일지' 카테고리의 다른 글

HumanML3D Dataset 준비하기  (3) 2024.11.13
Welcome to Hogwarts!  (3) 2024.09.29
이미지 전처리  (0) 2023.01.30