🙋♂️ 오늘은 히스토그램 분석에 대해서 공부한 내용을 정리합니다!
✅ 예제 코드 (GrayScale 영상과 Color 영상의 Histogram 생성)
|
import sys
import numpy as np
import matplotlib.pyplot as plt
import cv2
# 그레이스케일 영상의 히스토그램
src = cv2.imread('lenna.bmp', cv2.IMREAD_GRAYSCALE)
if src is None:
print('Image load failed!')
sys.exit()
hist = cv2.calcHist([src], [0], None, [256], [0, 256])
cv2.imshow('src', src)
cv2.waitKey(1)
plt.plot(hist)
plt.show()
# 컬러 영상의 히스토그램
src = cv2.imread('lenna.bmp')
if src is None:
print('Image load failed!')
sys.exit()
colors = ['b', 'g', 'r']
bgr_planes = cv2.split(src)
for (p, c) in zip(bgr_planes, colors):
hist = cv2.calcHist([p], [0], None, [256], [0, 256])
plt.plot(hist, color=c)
cv2.imshow('src', src)
cv2.waitKey(1)
plt.show()
cv2.destroyAllWindows()
|
cs |
🖼️ 결과 이미지


✅ 예제 코드 (GrayScale 영상과 Historgram, 실제 함수 구현)
|
import sys
import numpy as np
import matplotlib.pyplot as plt
import cv2
def getGrayHistImage(hist):
# 255로 채워진 256 x 100의 사이즈인 GrayScale 영상을 만든다.
imgHist = np.full((100, 256), 255, dtype=np.uint8)
# 가장 높은 값을 저장한다.
histMax = np.max(hist)
for x in range(256):
pt1 = (x, 100)
# 가장 높은 임계값의 최대 픽셀 갯수는 100개가 되도록 설정한다.
pt2 = (x, 100 - int(hist[x, 0] * 100 / histMax))
cv2.line(imgHist, pt1, pt2, 0)
return imgHist
src = cv2.imread('lenna.bmp', cv2.IMREAD_GRAYSCALE)
if src is None:
print('Image load failed!')
sys.exit()
hist = cv2.calcHist([src], [0], None, [256], [0, 256])
histImg = getGrayHistImage(hist)
cv2.imshow('src', src)
cv2.imshow('histImg', histImg)
cv2.waitKey()
cv2.destroyAllWindows()
|
cs |
🖼️ 결과 이미지

본 학습 내용은 "OpenCV를 활용한 컴퓨터비전과 딥러닝" 을 참고하였음을 알려드립니다.
'Python OpenCV' 카테고리의 다른 글
| 영상의 이동 변환과 전단 변화 (2) | 2024.02.10 |
|---|---|
| 특정 색상 영역 추출하기 (0) | 2024.02.09 |
| 컬러 영상 처리와 색 공간 (0) | 2024.02.09 |
| OpenCV 그리기 함수 (0) | 2024.02.04 |
| 마스크 연산과 ROI (0) | 2024.01.26 |