【发布时间】:2013-04-30 22:53:33
【问题描述】:
我不确定 OpenCV (C++) 中是否存在执行此操作的函数。
我想在 OpenCV 中为 cv::Mat 的每个像素调用一个自定义函数,并且整个结果应该存储在一个矩阵中。
我可以在一行代码中做到这一点吗(类似于 Python 中的 map 函数)?
【问题讨论】:
我不确定 OpenCV (C++) 中是否存在执行此操作的函数。
我想在 OpenCV 中为 cv::Mat 的每个像素调用一个自定义函数,并且整个结果应该存储在一个矩阵中。
我可以在一行代码中做到这一点吗(类似于 Python 中的 map 函数)?
【问题讨论】:
我没有尝试过,但根据docs,有用于访问矩阵元素的 STL 样式迭代器:
// compute sum of positive matrix elements, iterator-based variant
double sum=0;
MatConstIterator_<double> it = M.begin<double>(), it_end = M.end<double>();
for(; it != it_end; ++it)
sum += std::max(*it, 0.);
如果它们被正确实现,您应该可以像这样将它们与 std::for_each 一起使用
std::for_each(M.begin<double>(), M.end<double>(), [](double& e) { /* do something with e */ });
【讨论】:
double& e 作为参数。使用double 将进行复制而不是分配给图像数据。