728x90
반응형
코드 및 이미지 : https://github.com/Seokii/Study_OpenCV
이번에는 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
반응형
'머신러닝 & 딥러닝 > 컴퓨터 비전' 카테고리의 다른 글
[OpenCV with Python] - 15. 인물 사진 9000장 얼굴 인식 해보고 잘라서 저장해보기 (0) | 2022.03.17 |
---|---|
[OpenCV with Python] - 14. 히스토그램 평활화, 이퀄라이즈(histogram equalize) : cv2.equalizeHist() (0) | 2021.11.10 |
[OpenCV with Python] - 12. 행렬 덧셈과 곱셈을 이용한 이미지(영상) 합성/합치기 (0) | 2021.09.26 |
[OpenCV with Python] - 11. 이미지(영상)의 크기 변환(확대 및 축소) : cv2.resize() (0) | 2021.09.26 |
[OpenCV with Python] - 10. 이미지(영상)의 밝기 조절 (0) | 2021.09.25 |
댓글