gpt4 book ai didi

c++ - 将 cv::Points2f 的 vector 与 cv::Matx33f 相乘

转载 作者:行者123 更新时间:2023-11-28 03:11:53 25 4
gpt4 key购买 nike

我有一个功能可以正常工作:

cv::Point2f classA::DoStuff(cv::Point2f pTmp){
cv::Matx33f newMatrix = oldMatrix ; // oldMatrix is already defined
cv::Point3f newPoint = newMatrix *pTmp;
cv::Point2f result(newPoint.x, newPoint.y);
return result;
}

好吧,现在我想在一组 vector 上运行这个函数,我知道我可以用 for 循环来做到这一点,但是从这个答案,一个 vector 与一个标量相乘:

std::transform(myv1.begin(), myv1.end(), myv1.begin(),
std::bind1st(std::multiplies<T>(),3));

Multiply vector elements by a scalar value using STL

我想有可能在一行中完成它,知道如何使用我的函数来做到这一点,比如:

std::vector<cv::Point2f> classA::Dostuff(std::vector<cv::Point2f> inputVector){
cv::Matx33f newMatrix = oldMatrix ; // oldMatrix is already defined

..!!!

提前致谢?

}

最佳答案

假设您想从 classA 的一个实例中运行它,它会是这样的:

using namespace std::placeholders;
std::transform(vec.begin(),
vec.end(),
vec.begin(),
std::bind(&classA::DoStuff, this, _1));

哪里vec是一个 std::vector<std::vector<cv::Point2f>> .请注意,您可能正在制作不必要且可能代价高昂的输入 vector 拷贝。除非您需要函数中的拷贝,否则传递 const 引用可能会更好:

std::vector<cv::Point2f> classA::Dostuff(const std::vector<cv::Point2f>& inputVector);

关于c++ - 将 cv::Points2f 的 vector 与 cv::Matx33f 相乘,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18202799/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com