opencv python 2D 직사 도 예제 코드

Histograms - 3 : 2D Histograms
우 리 는 이미 1 차원 직사 도 를 계산 하고 그 렸 다.왜냐하면 우 리 는 하나의 특징,즉 픽 셀 의 그 레이스 케 일 강도 값 만 을 고려 하기 때문이다.그러나 2 차원 직사 도 에 서 는 두 가지 특징 을 고려 해 야 한다.보통 색 직사 도 를 찾 는 데 사용 되 는데 그 중에서 두 가지 요 소 는 각 픽 셀 의 색조 와 포화 도 값 이다.
OpenCV 의 2D 직사 도
함수cv.calcHist()를 사용 합 니 다.색상 직사 도 에 대해 서 는 그림 을 BGR 에서 HSV 로 변환 해 야 합 니 다.(1D 직사 도 에 대해 서 는 BGR 에서 그 레이스 케 일 로 전환 한 다 는 것 을 기억 하 세 요.2D 직사 도 에 대해 그 매개 변 수 는 다음 과 같이 수 정 됩 니 다.
  • channels=[0,1]:H(색조 Hue)와 S(포화 도 Saturation)를 동시에 처리 해 야 하기 때 문 입 니 다.
  • bins=[180,256]:180 대응 H,256 대응 S.
  • range=[0,180,0,256]:색조 수 치 는 0 에서 180 사이 이 고 포화 도 는 0 에서 256 사이 이다.
  • 
    import cv2
    import numpy as np
    from matplotlib import pyplot as plt
    
    img = cv2.imread('img.jpg')
    
    hsv = cv2.cvtColor(img,cv2.COLOR_BGR2HSV)
    
    hist = cv2.calcHist([hsv], [0, 1], None, [180, 256], [0, 180, 0, 256])
    Numpy 의 2D 직사 도np.histogram2d().(주의,1D 직사 도 에 대해 우 리 는 사용np.histogram())
    hist, xbins, ybins = np.histogram2d(h.ravel(),s.ravel(),[180,256],[[0,180],[0,256]])
    첫 번 째 매개 변 수 는 H 평면 이 고 두 번 째 는 S 평면 이 며 세 번 째 는 각 bins 의 수량 이 고 네 번 째 는 그들의 범위 이다.
    2D 직사 도 그리 기
    방법-1:사용cv.imshow()우리 가 얻 은 결 과 는 180 x 256 크기 의 2 차원 배열 입 니 다.따라서 cv.imshow()함수 처럼 정상적으로 표시 할 수 있 습 니 다.그 레이스 케 일 그림 입 니 다.다른 색 의 색 조 를 알 지 않 는 한 어떤 색 을 알려 주지 않 습 니 다.
    방법-2:Matplotlib 사용
    우 리 는matplotlib.pyplot.imshow()함 수 를 사용 하여 서로 다른 색상 그림 을 가 진 2D 직사 도 를 그 릴 수 있 습 니 다.이것 은 우리 로 하여 금 서로 다른 픽 셀 밀 도 를 더욱 잘 이해 하 게 합 니 다.그러나 서로 다른 색상 의 색조 값 을 알 지 않 는 다 면 이것 은 우리 로 하여 금 첫눈 에 보 이 는 것 이 어떤 색 인지 알 게 하지 못 할 것 입 니 다.그것 은 간단 하고 더 좋 습 니 다.
    코드:
    
    import cv2
    import numpy as np
    from matplotlib import pyplot as plt
    
    img = cv2.imread('img6.png')
    
    hsv = cv2.cvtColor(img,cv2.COLOR_BGR2HSV)
    
    hist = cv2.calcHist([hsv], [0,1], None, [180,256], [0,180,0,256])
    
    plt.imshow(hist, interpolation='nearest')
    plt.show()


    직사 도 에서 H=100 과 S=200 부근의 높 은 값 을 볼 수 있 습 니 다.그것 은 하늘의 파란색 에 대응 합 니 다.마찬가지 로 H=25 와 S=100 부근 에서 도 또 다른 피크 수 치 를 볼 수 있 습 니 다.궁전 의 노란색 에 대응 합 니 다.
    방법-3:OpenCV 샘플 스타일
    Opencv-python 2 샘플 중 색상 직사 도 에 사용 할 예제 코드(samples/python/colorhistogram.py).코드 를 실행 하면 직사 도 에 해당 하 는 색상 을 표시 하거나 색상 인 코딩 의 직사 도 를 간단하게 출력 할 수 있 습 니 다.결 과 는 매우 좋 습 니 다.(추가 줄 이 필요 하지만)
    이 코드 에서 작 가 는 HSV 에서 컬러 지 도 를 만 든 다음 에 이 를 BGR 로 바 꾸 었 다.생 성 된 직사 도 이미 지 는 이 색상 그림 과 곱 하고 그 는 작은 고립 된 픽 셀 을 제거 하 는 예비 처리 절 차 를 사용 하여 좋 은 직사 도 를 만 들 었 다.

    이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

    좋은 웹페이지 즐겨찾기