OpenCV / Как использовать adaptiveThreshold для вектора вместо Mat?

У меня есть вопрос об использовании adaptiveThreshold функция от OpenCV в C ++. (Вот это документация.)

void adaptiveThreshold(InputArray src, OutputArray dst, double maxValue, int adaptiveMethod, int thresholdType, int blockSize, double C)

После прочтения Эта статья, Мне довольно ясно, как эту функцию можно использовать, чтобы найти хороший порог для изображений (представлен как Mat объект в OpenVC).

Мой случай немного отличается тем, что я хотел бы использовать его только для vector вместо Mat, Так что в основном у меня есть vector из double значения, и мне нужно найти хороший порог, и мне было интересно, если есть простой способ адаптировать adaptiveThreshold функция в этом отношении. Я экспериментировал с более статичными методами, чтобы создать порог, например, используя среднее значение или медиану, но в моем случае они не работают.

У кого-нибудь есть предложения как к этому подойти? Я предполагаю, что мне придется скорректировать src а также dst параметры и как-то передать мой вектор, но прямой подход к этому не сработал.

2

Решение

Создать cv::Mat это оборачивает vector, Соответствующий конструктор объявлен:

//! builds matrix from std::vector with or without copying the data
template<typename _Tp> explicit Mat(const vector<_Tp>& vec, bool copyData=false);

Так что вы должны быть в состоянии сделать:

std::vector<double> vec(10, 0.0); // your vector here
bool copyData = false;
cv::Mat M(vec, copyData); // default is not to copy data

Результирующий Mat будет один столбец.

2

Другие решения