본문 바로가기
파이썬 (Python)/딥러닝 (Deep Learning)

Python opencv 이용하여 이미지 이진화하는 방법

by ★√★ 2021. 2. 24.

안녕하세요, Davey입니다. 오늘 포스팅할 내용은 opencv로 이미지를 불러올 때 불러온 이미지를 이진화 하는 방법에 대해서 설명 드리도록 하겠습니다. 이진화는 임계값을 기준으로 2가지로 구별하는 방법입니다. 

 

 

opencv를 이용하여 원하는 이미지를 이진화 하기

: 일단 이미지를 이원화 하기 위해서는 이전 포스팅에도 계속적으로 반복하면서 설명 드리는 부분이지만 자를 이미지를 불러와야 합니다. 이 부분에 대한 코드와 이진화 하는 코드를 같이 설명 드리도록 하겠습니다.

 

 

코드 분석

- cv2.cvtColor(test_image, cv2.COLOR_BGR2GRAY) 불러온 이미지를 Gray 스케일로 변환

- border01, binary01 = cv2.threshold(그레이스케일한 이미지, 임계값, 최대값, cv2.THRESH_BINARY)

: Gray 스케일로 변환한 이미지를 border01 (임계값), binary01에는 이진화 한 이미지를 저장함.

 

- 임계값에 대해서 다시 한번 설명을 하면 흑백을 나누는 기준값을 의미합니다. 임계값 이하는 "0" 이 되고 임계값 이상은 최대값이 되는  cv2.THRESH_BINARY 를 적용해서 이진화 합니다. 임계값 종류는 아래 추가적으로 첨부 하도록 하겠습니다. 

 

임계값 속성 값

의미

cv2.THRESH_BINARY

1) 임계값 이상 = 최대값
2) 임계값 이하 = 0

cv2.THRESH_BINARY_INV

1) 임계값 이상 = 0
2) 임계값 이하 = 최대값

cv2.THRESH_TRUNC

1) 임계값 이상 = 임계값
2) 임계값 이하 = 원본값

cv2.THRESH_TOZERO

1) 임계값 이상 = 원본값
2) 임계값 이하 = 0

cv2.THRESH_TOZERO_INV

1) 임계값 이상 = 0
2) 임계값 이하 = 원본값

cv2.THRESH_MASK

흑색 이미지로 변경

cv2.THRESH_OTSU

Otsu 알고리즘 사용

cv2.THRESH_TRIANG

# opencv 라이브러리 불러오기
import cv2

#원하는 이미지를 불러옴
test_image = cv2.imread("002.jpg", cv2.IMREAD_COLOR)

#불러온 이미지를 그레이 스케일로 변환
gray_tr01 = cv2.cvtColor(test_image, cv2.COLOR_BGR2GRAY)

#그레이스케일에 임계값을 적용하여 이진화 시킴
border01, binary01 = cv2.threshold(gray_tr01, 150, 255, cv2.THRESH_BINARY)

 

 

이진화 시킨 이미지 출력하기

: 위의 코드를 구현하여 이진화 시킨 이미지를 출력해보도록 하겠습니다. 원본 값과 비교하기 위해서 원본 이미지도 출력하는 코드를 삽입하도록 하겠습니다. 추가로 출력한 이미지도 첨부하도록 하겠습니다.

 

#원본 이미지 출력
cv2.imshow("Original Image", test_image)

#이진화한 이미지 출력
cv2.imshow("Binary Image", binary01)

cv2.waitKey(0)
cv2.destroyAllWindows()

 

 

맺음말

: 이번 포스팅은 opencv 이용하여 불러온 이미지를 이진화하는 방법에 대해서 설명 드렸습니다. 이미지 인식을 위해서 임계값을 조정해서 인식을 잘하고 더 구별하는 코드를 작성하기 위해서 많은 연습이 필요할 거라고 예상합니다. 그럼 이만 마무리 하도록 하겠습니다. 감사합니다.

 

제 Posting이 조금이나마 정보 전달에 도움이 되셨길 빌며, 되셨다면, 구독, 댓글, 공감 3종 세트 부탁 드립니다. 감사합니다.


[저작권이나권리를 침해한 사항이 있으면 언제든지 Comment 부탁 드립니다검토  수정  삭제 조치 하도록 하겠습니다그리고기재되는 내용은 개인적으로 습득한 내용이므로 오류가 발생할  있을 가능성이 있으므로기재된 내용은 참조용으로만 봐주시길 바랍니다게시물에오류가 있을때도, Comment 달아 주시면검증 결과를 통해수정하도록 하겠습니다.]

728x90

댓글


// 내부링크를 현재창으로 열기 // Open internal links in same tab