🐍Python/OpenCV

    [OpenCV] 04-9. Contours (5)

    이번 장에서는, Contours의 층에 대해서 알아볼 것이다.(Contours의 부모-자식 관계)Theorycv2.findContours() 함수를 이용하여 이미지의 contours를 찾게되면, Contour Retrival Mode 인자를 넘겨야한다. 보통은 cv2.RETR_LIST 나 cv2.RETR_TREE를 사용하고 작동도 잘한다. 하지만 사실상 의미하는 것이 무엇일까?결과에서 또한, 3가지 arrays를 얻는데, 첫 번째는 이미지, 두 번째는 contours, 나머지 하나는 “계층”이라 불리우는 것이다. 하지만 이 계층을 어디에서도 쓴적이 없다. 그러면 계층은 무엇이고 어디에 사용될까? 이전에 언급했던 인자들과는 무슨 관계가 있는 것일까?이번 장에서 다루게..

    [OpenCV] 04-9. Contours (4)

    이번 장에서는Convexity defects와 이를 어떻게 찾아내는지를 볼 것이다점에서 다각형까지의 최단 거리를 찾을 것이다.다른 모양들을 매칭시킬 것이다.Theory and Code1. Convexity Defects두 번째 장에서 convex hull이 무엇인지 보았다. 이 hull에서 객체의 이탈은 convexity defect로 간주될 수 있다.OpenCV는 이를 찾을 수 있는 완성된 함수인 cv2.convexityDefects() 를 제공한다. 기본 함수는 다음과 같다.hull = cv2.convexHull(cnt,returnPoints = False) defects = cv2.convexityDefects(cnt,hull) convex hul..

    [OpenCV] 04-9. Contours (3)

    여기서는 고체성(Solidity), 등가 지름(Equivalent Diameter), 마스크 이미지, 평균 강도등과 같이 자주 사용되는 물체의 특성을 추출하는 방법을 배울 것이다. 자세한 내용은 Matlab regionprops문서에서 확인할 수 있다. Matlab regionprops documentation.1. Aspect Ratio이 비율은 객체의 bounding rect의 높이에 대한 폭의 비율이다.AspectRatio=WidthHeightx,y,w,h = cv2.boundRect(cnt) aspect_ratio = float(w)/h 2. ExtentExtent는 bounding rec 영역에 대한 contour 영역의 비율이다.Extent=ObjectA..

    [OpenCV] 04-9. Contours (2)

    이번에는contours의 다른 특징인, 영역(area), 둘레(perimeter), 중심(centroid), 경계 상자(bounding box)등을 찾을 것이다.contours와 관련된 수많은 함수를 볼 것이다.1. Moments이미지 모멘트(Image moments)는 객체의 무게중심, 객체의 면적과 같은 특성을 계산하는데 도움을 준다. 위키피디아 페이지를 참고하자! Image Momentscv2.moments() 함수는 계산된 모든 moments 값을 딕셔너리로 제공한다. 아래 코드를 보자!import cv2 import numpy as np img = cv2.imread('./images/golden.jpg',0) ret, thresh = cv2.threshold..

    [OpenCV] 04-9. Contours (1)

    윤곽(Contours)가 무엇인지 이해하자윤곽을 찾는 것, 윤곽을 그리는 것을 배우자cv2.findContours(), cv2.drawContours() 함수에 대해 볼 것이다.What are contours?윤곽은 같은 색이나 강도를 가지는 연속된 점들을 연결 시켜놓은 커브(경계를 따라)라고 간단히 설명될 수 있다(ex. 등고선). 윤곽은 형태 분석과 객채 탐지, 인식에 유용한 도구이다.더 나은 정확도를 위해, 이진 이미지를 사용한다. 그러니 윤관을 찾기 전에, threshold나 canny edge detection을 적용한다.findContours 함수는 원본 이미지를 수정한다. 윤곽을 찾은 후에도 원본 이미지를 원하는 경우 미리 다른 변수에 저..

    [OpenCV] 04-8. Image Pyramids

    이번 챕터에서는,Image Pyramids에 대해 배우고새로운 과일인 Orapple을 만들기 위해 Image Pyramids를 사용할 것이다.cv2.pyrUp(), cv2.pyrDown()Theory일반적으로, 변함없는 사이즈의 이미지를 사용했었다. 하지만 어떠한 상황에서는, 같은 이미지이지만 다른 해상도에서 작업할 필요가 있다. 예를 들어서, 이미지내에서 얼굴 과 같은 무언가를 찾을 때, 우리는 그 물체가 이미지에 어떤 크기로 나타날지 확신할 수 없다. 이 경우, 우리는 서로 다른 해상도의 이미지 세트를 생성하고 모든 이미지에 대해 객체를 찾아야한다. 이 서로 다른 해상도의 이미지셋을 “Image Pyramids”라고 부른다. (큰 것부터 작은 것이 아래서 위로..