【问题标题】:How to process vectors (mathematical) in OpenCV如何在 OpenCV 中处理向量(数学)
【发布时间】:2013-07-24 22:52:05
【问题描述】:

在 OpenCV 内置示例中查找图像上的正方形,所有轮廓都存储在向量中。
如何根据数学向量运算处理这些点。 为了计算这些轮廓点之间的简单 versors,我必须将它们转换为 Vec2d,所以我可以使用“norm”函数:

Vec2d PointTOVec2d(Point q){
return Vec2d(q.x,q.y);
}

void main(){
vector<cv::Point> square=SomeFunctionCalculatingSquarePoints(); 
Vec2d v1;
v1=PointTOVec2d(square[1]-square[0]);
v1=v1/norm(v1);
}

但即使采用这种方式,我似乎也无法找到一种方法(通过显式函数)来计算 Vec2d 的简单幅度。

那么如何在 OpenCV 中将点作为数学向量进行处理,是我必须自己编写所有内容,还是错过了一些非常重要的 OpenCV 数学特性/方式/类来处理它们?

【问题讨论】:

标签: c++ opencv


【解决方案1】:

cv::norm() 已经可以在cv::Point 上运行。如果您不想,则无需转换为cv::Vec2d

cv::Point pt(3,4);
double n1 = cv::norm(pt);   // Result is 5

cv::Vec2d v(3,4);
double n2 = cv::norm(v);    // Result is 5

【讨论】:

  • 对不起 - 我不知道“接受”功能或消息指示器..我当然接受它:)
猜你喜欢
  • 1970-01-01
  • 2018-03-07
  • 1970-01-01
  • 2016-10-24
  • 2018-09-23
  • 1970-01-01
  • 2019-05-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多