Python/파이썬 OpenCV 공부

[파이썬 OpenCV] OpenCV 함수만으로 히스토그램 그리기 - cv2.line 활용

AI 꿈나무 2020. 9. 28. 15:09
반응형

황선규 박사님의 OpenCV 강의를 공부하면서 정리하였습니다.

 


OpenCV 함수만으로 히스토그램 그리기 - cv2.line 활용

 이전 포스팅에서는 plt함수를 이용해서 히스토그램을 그렸습니다.

 이번 포스팅에서는 OpenCV 함수만으로 히스토그램 그리는 법을 알아보겠습니다.

 

##  OpenCV 함수만으로 히스토그램 그리기
def getGrayHistImage(hist):
    # 가장 높은 높이가 100으로 제한을 둠
    imgHist = np.full((100, 256), 255, dtype=np.uint8)

    histMax = np.max(hist) # histmax = 255
    for x in range(256):
        pt1 = (x, 100)                                   # 시작점, 좌측 상단 기준
        pt2 = (x, 100 - int(hist[x, 0] * 100 / histMax)) # 끝점, 100을 곱하고 255로 나눠 단위 통일
        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()

 이처럼 matplot 라이브러리를 이용하지 않고 opencv 함수만을 이용하여 히스토그램을 그릴 수 있습니다. 감사합니다.

 

반응형