Max*_*ich 10 c++ opencv iterator
我试图遍历矩阵的列(例如,它连接成矩阵的一堆列向量,我想分别对每个列向量进行操作).使用for循环很容易做到这一点:
for(int n = 0; n < mat.cols; n++)
{
cv::Mat c = mat.col(n);
// do stuff to c
}
Run Code Online (Sandbox Code Playgroud)
但是如果可能的话我想使用迭代器这样做,以便我可以使用std :: accumulate或std :: transform来简化我的代码.
所以我基本上都在寻找类似的东西
for each Mat c in mat.columns
Run Code Online (Sandbox Code Playgroud)
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; });
Run Code Online (Sandbox Code Playgroud)
举个简单的例子.
所以既然没有得到回答,如果有人有一个本土解决方案来提供这样的迭代器,我会看看,否则如果我有机会我可能会自己调查一下
自从我发布这个问题以来已经过去了大约两年,但我终于开始编写这样一个库了。你可以在这里找到它
https://gitlab.com/Queuecumber/opencvit
它在 MIT 许可下作为 opencv 的易于使用的配套库进行分发。示例位于自述文件中,对于了解 STL 的人来说应该非常直观。现在它提供了 acolumn_iterator和 arow_iterator但还有更多的可能性。如果有人有建议或发现错误,请在存储库上留下问题。