【问题标题】:map function in OpenCV C++OpenCV C++ 中的映射函数
【发布时间】:2013-04-30 22:53:33
【问题描述】:

我不确定 OpenCV (C++) 中是否存在执行此操作的函数。

我想在 OpenCV 中为 cv::Mat 的每个像素调用一个自定义函数,并且整个结果应该存储在一个矩阵中。

我可以在一行代码中做到这一点吗(类似于 Python 中的 map 函数)?

【问题讨论】:

    标签: c++ opencv


    【解决方案1】:

    我没有尝试过,但根据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 */ });
    

    【讨论】:

    • 你的 lambda 应该有 double&amp; e 作为参数。使用double 将进行复制而不是分配给图像数据。
    • 这看起来是个好主意。我想知道我们是否可以为整行而不是像素做它;
    • 您可以使用适配器将步长增加到行长度,如下所述:stackoverflow.com/questions/12726466/…
    猜你喜欢
    • 2012-06-17
    • 1970-01-01
    • 1970-01-01
    • 2012-01-04
    • 1970-01-01
    • 1970-01-01
    • 2011-08-04
    • 2019-09-22
    • 2014-09-03
    相关资源
    最近更新 更多