Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Unhandled exception after reading histogram (created with calcHist)
- //int histSize[3];
- //float hranges[2];
- //const float* ranges[3];
- //int channels[3];
- ColorHistogram::ColorHistogram()
- {
- // Prepare arguments for a color histogram
- histSize[0]= histSize[1]= histSize[2]= 256;
- hranges[0]= 0.0; // BRG range
- hranges[1]= 255.0;
- ranges[0]= hranges; // all channels have the same range
- ranges[1]= hranges;
- ranges[2]= hranges;
- channels[0]= 0; // the three channels
- channels[1]= 1;
- channels[2]= 2;
- }
- cv::MatND ColorHistogram::getHistogram(const cv::Mat &image)
- {
- cv::MatND hist;
- // Compute histogram
- cv::calcHist(&image,
- 1, // histogram of 1 image only
- channels, // the channel used
- cv::Mat(), // no mask is used
- hist, // the resulting histogram
- 3, // it is a 3D histogram
- histSize, // number of bins
- ranges // pixel value range
- );
- return hist;
- }
- cv::Mat ColorHistogram::getHistogramImage(const cv::Mat &image){
- // Compute histogram first
- cv::MatND hist = getHistogram(image);
- // Get min and max bin values
- double maxVal=0;
- double minVal=0;
- cv::minMaxLoc(hist, &minVal, &maxVal, 0, 0);
- //....
- }
- void cv::minMaxLoc( InputArray _img, double* minVal, double* maxVal,
- Point* minLoc, Point* maxLoc, InputArray mask )
- {
- Mat img = _img.getMat();
- CV_Assert(img.dims <= 2); // <-- This is the line that is asserting for you...
- minMaxIdx(_img, minVal, maxVal, (int*)minLoc, (int*)maxLoc, mask);
- if( minLoc )
- std::swap(minLoc->x, minLoc->y);
- if( maxLoc )
- std::swap(maxLoc->x, maxLoc->y);
- }
Advertisement
Add Comment
Please, Sign In to add comment