머신러닝 & 딥러닝/컴퓨터 비전

[OpenCV with Python] - 13. 히스토그램 계산 및 그리기 : cv2.calcHist()

by seokii 2021. 10. 24.
728x90
반응형

코드 및 이미지 : https://github.com/Seokii/Study_OpenCV

 

GitHub - Seokii/Study_OpenCV: study about OpenCV

study about OpenCV. Contribute to Seokii/Study_OpenCV development by creating an account on GitHub.

github.com

 

이번에는 cv2.calcHist()를 사용하여 영상(사진)의 히스토그램을 계산하고 matplotlib로 간단하게 히스토그램을 그려보도록 하겠습니다.

 

함수 설명

1. cv2.calcHist(image, channel, mask, histSize, ranges, .. ) -> ret

  • image : 영상, 이미지 (배열)
  • channel : 히스토그램 계산의 차원 목록
  • mask : 특정 영역을 계산하기 위한 마스크 행렬
  • histSize : 히스토그램 배열의 크기 ( X축, 히스토그램의 Bin 개수)
  • ranges : 히스토그램의 범위 ( Y축, 화소의 강도 / 대부분 [0, 256] )

 

 

주피터 노트북으로 구현하기

In [1] : 

import numpy as np
import cv2
from matplotlib import pyplot as plt

In [2] : 

cat = cv2.imread("images/cat.jpg", cv2.IMREAD_GRAYSCALE)

- 필요한 라이브러리와 이미지를 불러옵니다.

- 이미지는 그레이스케일(흑백)로 불러왔습니다.

 

In [3] : 

hist = cv2.calcHist([cat], [0], None, [256], [0,256])

In [4] : 

hist.shape

- cv2.calHist() 함수를 사용해 이미지의 히스토그램을 계산해줍니다.

- 256개의 요소를 가진 배열이 반환 값이 되었음을 확인할 수 있습니다.

 

In [5] : 

plt.hist(cat.ravel(), 256, [0,256])
plt.show()

- matplotlib의 .hist()를 사용해 히스토그램을 간단하게 그렸습니다.

- .ravel() 함수는 2차원 배열을 1차원 배열로 풀어주는 numpy의 함수입니다.

 

 

728x90
반응형

댓글