2011-02-05 10 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

また、なぜ2つのヒストグラムボックスがありますか? – gonzobrains

関連する問題