我在 OpenCV 中有一个二维点的向量
std::vector<cv::Point2f> points;
我想计算 x 和 y 坐标的平均值points
。就像是:
cv::Point2f mean_point; //will contain mean values for x and y coordinates
mean_point = some_function(points);
这在 Matlab 中很简单。但我不确定是否可以利用一些高级 OpenCV 函数来完成同样的任务。有什么建议么?
InputArray
这里做得很好。您只需致电
cv::Mat mean_;
cv::reduce(points, mean_, 01, CV_REDUCE_AVG);
// convert from Mat to Point - there may be even a simpler conversion,
// but I do not know about it.
cv::Point2f mean(mean_.at<float>(0,0), mean_.at<float>(0,1));
Details:
在较新的 OpenCV 版本中,InputArray
介绍了数据类型。这样,就可以将矩阵 (cv::Mat) 或向量作为参数发送到 OpenCV 函数。 Avector<Vec3f>
将被解释为具有三个通道、一行且列数等于向量大小的浮点矩阵。由于不复制任何数据,因此这种透明转换非常快。
优点是您可以使用更适合您的应用程序的任何数据类型,同时您仍然可以使用 OpenCV 函数来简化数学运算。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)