Гистограммы в Opencv - PullRequest
       27

Гистограммы в Opencv

1 голос
/ 02 декабря 2011

Я пытаюсь реализовать эту конкретную команду в MATLAB для opencv. Я работаю в Linux Ubuntu. Можете ли вы помочь мне разобраться с кодом в opencv для этого?17: 255);G_vector - это массив размером 1X100, который представляет 1 компонент изображения.

Я использую следующий код

vector<Mat> rgb_planes;
       split(image,rgb_planes);
       int histSize = 255;

         /// Set the ranges ( for R,G,B) )
         float range[] = { 0,17, 255 } ;
         const float* histRange = { range };

         bool uniform = true; bool accumulate = false;

         Mat r_hist, g_hist, b_hist,g_hist1;

         /// Compute the histograms:
         calcHist( &rgb_planes[0], 1, 0, Mat(), r_hist, 1, &histSize, &histRange, uniform, accumulate );
         calcHist( &rgb_planes[1], 1, 0, Mat(), g_hist, 1, &histSize, &histRange, uniform, accumulate );
         calcHist( &rgb_planes[2], 1, 0, Mat(), b_hist, 1, &histSize, &histRange, uniform, accumulate );

         // Draw the histograms for R, G and B
         int hist_w = 400; int hist_h = 400;
         int bin_w = cvRound( (double) hist_w/histSize );

         Mat histImage( hist_w, hist_h, CV_8UC3, Scalar( 0,0,0) );

         /// Normalize the result to [ 0, histImage.rows ]
         normalize(r_hist, r_hist, 0, histImage.rows, NORM_MINMAX, -1, Mat() );
         normalize(g_hist, g_hist, 0, histImage.rows, NORM_MINMAX, -1, Mat() );
         normalize(b_hist, b_hist, 0, histImage.rows, NORM_MINMAX, -1, Mat() );

Можете ли вы предложить, где я должен внести изменения

1 Ответ

2 голосов
/ 02 декабря 2011

histSize контролирует количество бинов в каждом измерении.Если вам нужно 16 бинов в этих одномерных гистограммах, используйте:

int histSize[] = { 16 };

или, я думаю, просто int histSize = 16;будет работать.

Установите границы корзины от 0 до 255, например:

<code>  float intensity_range = { 0, 256 }; //upper bound is exclusive
  const float * histRange[] = { intensity_range }; 

CalcCist в OpenCV обеспечивает возможность настройки, которую когда-либо смогут использовать лишь немногиенеобходимость. Проверьте описание метода и пример кода здесь .

...