1. 소스 코드
import os
import cv2
import numpy as np
_MAX_HISTO_ = 256
#히스토그램 계산 함수
def calc_histo(img_src):
#히스토그램을 누적할 변수 생성
histo_info = np.zeros(_MAX_HISTO_)
src_height = img_src.shape[0]
src_width = img_src.shape[1]
#히스토그램 계산
for h in range(src_height):
for w in range(src_width):
histo_info[img_src[h,w]] += 1
return histo_info
#히스토그램 정보를 받아서 히스토그램 이미지를 반환하는 함수
def draw_histo(histo_info):
#히스토그램을 그릴 공간 생성
img_histo = np.zeros([256, _MAX_HISTO_], dtype=np.uint8)
histo_height = img_histo.shape[0]
max_histo = max(histo_info)
#히스토그램 그리기(축의 높이를 조절하기 위해 최대값 사용)
for i in range(_MAX_HISTO_):
cv2.line(img_histo, (i, histo_height), (i, int(histo_height-histo_info[i]/max_histo*histo_height)), 255, 1)
return img_histo
#현재 실행되고 있는 경로 값을 얻어서 이미지 경로를 조합
cur_path=os.getcwd() # 현재 경로
img_src='bay.jpg'
img_src_path = os.path.join(cur_path, img_src)
#그레이스케일로 이미지 읽기
img_src = cv2.imread(img_src_path, cv2.IMREAD_GRAYSCALE)
#히스토그램 계산
histo_info_src = calc_histo(img_src)
#히스토그램 그리기
img_histo_src = draw_histo(histo_info_src)
#원본 이미지와 히스토그램 상태 출력
cv2.imshow('src', img_src)
cv2.imshow('histo_src', img_histo_src)
cv2.waitkey()
cv2.destroyAllWindows()
2. 결과
'IT > 영상처리' 카테고리의 다른 글
[영상처리/OpenCV-Python] Maximally Stable Extreme Regions 구현하기 (0) | 2019.04.13 |
---|---|
[영상처리/OpenCV-Python] 오츠 이진화 구현하기 (0) | 2019.04.12 |
[영상처리/OpenCV-Python] 가우시안 노이즈 영상 이미지를 더하여 노이즈 줄이기 (2) | 2019.04.01 |
영상처리 OpenCV 히스토그램 평활화 및 CLAHE 적용 히스토그램 그리기 (0) | 2019.03.31 |
영상처리 SSD 관련 예제 문제(2) (0) | 2019.03.20 |
[영상처리] - 파이썬(Python)을 이용한 이미지 채널정보 접근 (0) | 2019.03.18 |
[영상처리] - 파이썬(Python)을 이용한 이미지 파일 읽기, 픽셀좌표 접근 (0) | 2019.03.18 |
영상처리 SSD 관련 예제 문제 (0) | 2019.03.17 |
최근댓글