Поэтому я пытаюсь получить фактические данные из гистограммы, сгенерированной в OpencCV. Я использую код, расположенный Вот и можно увидеть ниже. Тем не менее, я точно не знаю, как получить данные из этого Mat
, я видел это сообщение, но пост использует hist.get(i, 0)
чтобы получить данные гистограммы. Тем не менее, моя гистограмма Mat
содержит только 1 строку … и 16384 столбца. Соответствующий код ниже.
static Mat spatial_histogram(InputArray _src, int numPatterns,
int grid_x, int grid_y, bool /*normed*/)
{
Mat src = _src.getMat();
// calculate LBP patch size
int width = src.cols/grid_x;
int height = src.rows/grid_y;
// allocate memory for the spatial histogram
Mat result = Mat::zeros(grid_x * grid_y, numPatterns, CV_32FC1);
// return matrix with zeros if no data was given
if(src.empty())
return result.reshape(1,1);
// initial result_row
int resultRowIdx = 0;
// iterate through grid
for(int i = 0; i < grid_y; i++) {
for(int j = 0; j < grid_x; j++) {
Mat src_cell = Mat(src, Range(i*height,(i+1)*height), Range(j*width,(j+1)*width));
Mat cell_hist = histc(src_cell, 0, (numPatterns-1), true);
// copy to the result matrix
Mat result_row = result.row(resultRowIdx);
cell_hist.reshape(1,1).convertTo(result_row, CV_32FC1);
// increase row count in result matrix
resultRowIdx++;
}
}
// return result as reshaped feature vector
return result.reshape(1,1);
}
result
становится Mat
размером 1 х 16384 и значения редки в Mat
… Так как мне получить правильные данные гистограммы?
Задача ещё не решена.
Других решений пока нет …