OpenCV Mat для преобразования alglib real 2d Array

Как конвертировать Opencv Mat в Alglib настоящий 2D массив?

Вот пример, где я застрял

Mat Col(28539,97,CV_32F);

Я хочу преобразовать это Mat Альблибу real_2d_array для обучения классификатора.

1 ответ

Решение
Mat Col(28539, 97, CV_32F);

является двумерным (28539 строками, 97 столбцами) плотным массивом с плавающей точкой (CV_32F = float) в OpenCV.

Почти эквивалентный тип данных alglib

// bi-dimensional real (double precision) array
real_2d_array matrix;

Расположение данных в Mat совместим с real_2d_array (и большинство типов плотных массивов из других наборов инструментов и SDK).

Простой способ конвертировать это:

const int rows(28539);
const int columns(97);

matrix.setlength(rows, columns);

for (int i(0); i < rows; ++i)
  for (int j(0); j < columns; ++j)
    matrix(i, j) = Col.at<float>(i, j);

Mat::at возвращает ссылку на указанный элемент массива.

РЕДАКТИРОВАТЬ

Из справочного руководства:

void alglib::dfbuildrandomdecisionforest(
    real_2d_array xy,
    ae_int_t npoints,
    ae_int_t nvars,
    ae_int_t nclasses,
    ae_int_t ntrees,
    double r,
    ae_int_t& info,
    decisionforest& df,
    dfreport& rep);
  • xy это обучающий набор (строки, соответствующие компонентам выборки, и столбцы, соответствующие переменным).

    Для задачи классификации первым nvars из столбцов содержат независимые переменные. Последний столбец будет содержать номер класса (от 0 до nclasses-1). Дробные значения округляются до ближайшего целого числа.

  • npoints размер тренировочного набора (>=1).
  • nvars количество независимых переменных (>=1).
  • nclasses должно быть>1 для классификации.
  • ntrees количество деревьев в лесу (>=1).
  • r процент тренировочного набора, используемого для построения отдельных деревьев (0 < R <= 1).

Остальные параметры являются выходными параметрами. В случае возникновения проблем вы должны проверить info:

  • info код возврата:
    • -2, если есть точка с номером класса за пределами [0..nclasses-1],
    • -1, если были переданы неверные параметры (npoints<1, nvars<1, nclasses<1, ntrees<1, r<=0 или же r>1).
    • 1, если задача была решена.
Другие вопросы по тегам