2011-02-05 31 views
6

Tôi muốn tạo biểu đồ trong chương trình C# sử dụng EMGU. EMGU có một lớp gọi là MCvHistogram trong đó, nhưng tôi không biết cách sử dụng nó.Cách tạo biểu đồ

+0

Bài viết này cho thấy làm thế nào để tạo biểu đồ trong RGB http://stackoverflow.com/questions/8204822/how-to-draw-histogram-using-emgucv-and-c-sharp – JiP

Trả lời

11

Bạn nên sử dụng lớp DenseHistogram nếu bạn muốn sử dụng EmguCV. tôi sẽ chỉ cho bạn cách sử dụng cơ bản:

// 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); 

Có rất nhiều các phương pháp thông thường khác bên trong lớp DenseHistogram như Back chiếu

+0

thanx .. nhưng tôi đã tính toán biểu đồ bằng cách sử dụng CvInvoke.cvCalHist(), nhưng tôi thấy phương pháp trên dễ sử dụng hơn nhiều. Bạn có thể giải thích ngắn gọn về sự khác biệt giữa McvHistogram và DenseHistogram không? –

+2

DenseHistogram là lớp được quản lý bao bọc McvHistogram. Bạn có thể kiểm tra lớp DenseHistogram và kiểm tra xem nó có thuộc tính MCvHistogram không. Đề xuất của tôi là không sử dụng cvinvoke khi chức năng opencv đã được gói trong lớp được quản lý thích hợp ... –

3

Bạn có thể sử dụng đoạn mã này:

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

Nó sẽ tự động tạo biểu đồ của hình ảnh của bạn.

+0

làm cách nào để bạn biết giá trị nào cần chuyển cho bin? – gonzobrains

+0

Ngoài ra, tại sao bạn có hai hộp biểu đồ? – gonzobrains