opencv 累积不是标准品的一部分

ilmyapht  于 2023-05-07  发布在  其他
关注(0)|答案(1)|浏览(125)

我是C++(和OpenCV)的新手。找到了一些代码,并试图编译它,但得到一个错误。这是什么意思?
首先,accumulatestd::accumulate(),但编译器返回一个错误,告诉它不是std的成员。然后我将其更改为cv::accumulate(),但现在我得到一个新的错误?也许它应该是一个memeber的std,但我错过了包括一个头文件?

In file included from txtbin.hpp:11,
                 from txtbin.cpp:12:
dewarp.hpp: In member function ‘std::vector<cv::Point_<double> > Dewarp::keypoints_from_samples(const std::vector<std::vector<cv::Point_<double> > >&, std::vector<double, std::allocator<double> >&, std::vector<std::vector<double, std::allocator<double> > >&)’:
dewarp.hpp:96:47: error: invalid initialization of reference of type ‘cv::InputArray’ {aka ‘const cv::_InputArray&’} from expression of type ‘std::vector<double, std::allocator<double> >::iterator’
   96 |   double mean = cv::accumulate(py_coords.begin(), py_coords.end(), 0.0) / py_coords.size();

代码

std::vector<double> px_coords, py_coords;

for(const std::vector<cv::Point2d>& points : span_points){
        std::vector<double> py_coords, px_coords;
        for(const cv::Point2d& point : points){
            py_coords.push_back(point.dot(y_dir));
            px_coords.push_back(point.dot(x_dir) - px0);
        }
        double mean = cv::accumulate(py_coords.begin(), py_coords.end(), 0.0) / py_coords.size();
        y_coords.push_back(mean - py0);
        x_coords.push_back(px_coords);
    }
m4pnthwp

m4pnthwp1#

将WhozCraig的评论转换为答案:

#include <numeric>

使用std::accumulate

相关问题