개발 공부

9강 본문

AI/AI_Python_OPENCV 기초

9강

아이셩짱셩 2018. 8. 9. 13:30

#위 이미지는 코인을 주변가 정확하게 분리해내지 못하고 있다. 조금 더 정확한 이미지 값을 얻기 위해 adaptiveThreshold 함수를 사용하자

import numpy as np

import argparse

import cv2


image = cv2.imread('coin.jpg')

image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)

blurred = cv2.GaussianBlur(image, (5, 5), 0)

cv2.imshow("Image", image)


#위 함수의 결과를 보면 한가지 문제점이 있습니다. 임계값을 이미지 전체에 적용하여 처리하기 때문에 하나의 이미지에 음영이 다르면 일부 영역이 모두 흰색 또는 검정색으로 보여지게 됩니다.

#이런 문제를 해결하기 위해서 이미지의 작은 영역별로 thresholding을 하는 것입니다. 이때 사용하는 함수가 cv2.adaptiveThreshold() 입니다.

#cv2.adaptiveThreshold(이미지, 최대값,임계값을 계산하는 방식으로 cv2.ADAPTIVE_THRESH_MEAN_C은 주변 평균값으로 한다는 의미, 적용 형식, 적용할 크기, 평균이나 가중치에서 차감할 값)

#많이 어렵죠. 수학에서 공식과 같은 것입니다. 이미 만들어진 것을 값만 필요에 따라 바꾸면 됩니다.

thresh = cv2.adaptiveThreshold(blurred, 255,

   cv2.ADAPTIVE_THRESH_MEAN_C, cv2.THRESH_BINARY_INV, 11, 4)

cv2.imshow("Mean Thresh", thresh)

#가우시안 방식(정규분포)을 적용해보자.

thresh = cv2.adaptiveThreshold(blurred, 255,

   cv2.ADAPTIVE_THRESH_GAUSSIAN_C, cv2.THRESH_BINARY_INV, 15, 3)

cv2.imshow("Gaussian Thresh", thresh)

cv2.waitKey(0)

'AI > AI_Python_OPENCV 기초' 카테고리의 다른 글

11강  (0) 2018.08.09
10강  (0) 2018.08.09
8강  (0) 2018.08.09
7강  (0) 2018.08.09
6강  (0) 2018.08.07
Comments