Я пытаюсь выполнить итерацию по столбцам матрицы (например, ее кучу векторов столбцов, которые объединены в матрицу, и я хотел бы использовать каждый вектор столбца отдельно). Это довольно легко сделать с помощью цикла for:
for(int n = 0; n < mat.cols; n++)
{
cv::Mat c = mat.col(n);
// do stuff to c
}
Но я бы хотел сделать это с помощью итераторов, если это возможно, чтобы я мог использовать std:: accumulate или std:: transform, чтобы упростить мой код.
поэтому я в основном ищу что-то вроде
for each Mat c in mat.columns
Mat
имеет функцию begin<>
и end<>
, но насколько я знаю, ее можно использовать только для перебора отдельных элементов.
Как это можно сделать?
Чтобы быть ясным, я бы хотел написать
cv::Mat input;
cv::Mat output = std::accumulate(input.begincols(), input.endcols(), cv::Mat::zeros(n,k,CV_64F),
[](const cv::Mat &acum, const cv::Mat &column) { return acum + column * 5; });
Для простого примера.
Обновление:
Итак, поскольку на это не было ответа, если у кого-то есть домашнее решение для предоставления итераторов, как это, я бы посмотрел, иначе я мог бы изучить его сам, если у меня будет шанс