我是C++(和OpenCV)的新手。找到了一些代码,并试图编译它,但得到一个错误。这是什么意思?
首先,accumulate
是std::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);
}
1条答案
按热度按时间m4pnthwp1#
将WhozCraig的评论转换为答案:
使用
std::accumulate
。