2011-02-05 4 views
6

EMGU를 사용하는 C# 프로그램 내에서 히스토그램을 만들고 싶습니다. EMGU에는 MCvHistogram이라는 클래스가 있지만 사용 방법을 모르겠습니다.히스토그램을 만드는 방법

+0

나란히 RGB의 히스토그램을 작성하는 방법을 도시 http://stackoverflow.com/questions/8204822/how-to-draw-histogram-using-emgucv-and-c-sharp – JiP

답변

11

EmguCV를 사용하려면 DenseHistogram 클래스를 사용해야합니다. 나는 당신에게 기본적인 사용법을 보여주지 :

있습니다
// Create a grayscale image 
    Image<Gray, Byte> img = new Image<Gray, byte>(400, 400); 
    // Fill image with random values 
    img.SetRandUniform(new MCvScalar(), new MCvScalar(255)); 
    // Create and initialize histogram 
    DenseHistogram hist = new DenseHistogram(256, new RangeF(0.0f, 255.0f)); 
    // Histogram Computing 
    hist.Calculate<Byte>(new Image<Gray, byte>[] { img }, true, null); 

등 뒤로 투사로 DenseHistogram 클래스 내의 다른 일반적인 방법 많은

+0

고맙습니다 ..하지만 나는 이미 CvInvoke.cvCalHist(), 을 사용하여 히스토그램을 계산하지만, 위의 방법은 훨씬 더 사용하기 쉽다. McvHistogram과 DenseHistogram의 차이점을 간단히 설명 할 수 있습니까? –

+2

DenseHistogram은 McvHistogram을 래핑하는 관리되는 클래스입니다. DenseHistogram 클래스를 검사하여 MCvHistogram 속성이 있는지 확인할 수 있습니다. 내 제안은 opencv 기능이 이미 적절한 관리되는 클래스로 래핑되었을 때 cvinvoke를 사용하지 않는 것입니다 ... –

3

이 코드 사용할 수 있습니다

histogramBox.GenerateHistograms(image,bin);    
histogramBox2.Refresh(); 

그것을 자동으로 사진의 히스토그램을 만듭니다.

+0

bin에 전달할 값을 어떻게 알 수 있습니까? – gonzobrains

+0

또한 왜 히스토그램 상자가 두 개입니까? – gonzobrains

관련 문제