OpenCV - Confusion using calcHist

前端 未结 1 676
轻奢々
轻奢々 2021-01-05 17:58

I\'ve read the documentation for calcHist() many times, but I think my inexperience with OpenCV and rusty programming skills are completely precluding me from understanding

相关标签:
1条回答
  • 2021-01-05 18:40

    I modified the code from here

    You might also want to take a look at the documentation of cvtColor here

    Note that I have not tried to compile or run this code so I do not guarantee that it will work. But nonetheless, it might be useful as a reference.

    Mat hist;
    int nimages = 1; // Only 1 image, that is the Mat scene.
    int channels[] = {0} // Index for hue channel
    int dims = 1 // Only 1 channel, the hue channel
    int histSize[] = {9} // 9 bins, 1 each for Red, RY, Yellow, YG etc.
    float hranges[] = { 0, 180 }; // hue varies from 0 to 179, see cvtColor
    const float *ranges[] = {hranges};
    
    // Compute the histogram.
    calcHist(&scene, 
    nimages, 
    channels, 
    Mat(), // No mask
    hist, dims, histSize, ranges, uniform=true)
    
    // Now hist will contain the counts in each bin.
    // Lets just print out the values. Note that you can output Mat using std::cout
    cout << "Histogram: " << endl << hist << endl;
    
    // To access the individual bins, you can either iterate over them
    // or use hist.at<uchar>(i, j); Note that one of the index should be 0
    // because hist is 1D histogram. Print out hist.rows and hist.cols to see if hist is a N x 1 or 1 x N matrix.
    /*
    MatIterator_<uchar> it, end;
    int binIndex = 0;
    for( it = hist.begin<uchar>(), end = hist.end<uchar>(); it != end; ++it)
    {
      printf("Count in %d bin: %d\n", binIndex, *it);
      ++binIndex;
    }
    */
    
    0 讨论(0)
提交回复
热议问题