有多个点,如何使用c++和opencv求出距离最近的两个点
时间: 2023-05-18 18:06:10 浏览: 540
C++求两点之间距离
可以使用以下步骤来求出距离最近的两个点:
1. 首先,使用 OpenCV 中的 cv::Mat 类型来存储点的坐标信息。
2. 然后,使用 cv::norm 函数来计算两个点之间的距离。
3. 遍历所有点,计算每对点之间的距离,并记录下距离最小的两个点。
4. 最后,输出距离最近的两个点的坐标和距离值。
以下是示例代码:
```c++
#include <opencv2/opencv.hpp>
#include <iostream>
#include <vector>
using namespace cv;
using namespace std;
int main()
{
// 定义点的坐标
vector<Point2f> points = { Point2f(1, 2), Point2f(3, 4), Point2f(5, 6), Point2f(7, 8) };
// 计算距离最近的两个点
float min_dist = FLT_MAX;
Point2f p1, p2;
for (int i = 0; i < points.size(); i++)
{
for (int j = i + 1; j < points.size(); j++)
{
float dist = norm(points[i] - points[j]);
if (dist < min_dist)
{
min_dist = dist;
p1 = points[i];
p2 = points[j];
}
}
}
// 输出结果
cout << "距离最近的两个点为:" << p1 << " 和 " << p2 << endl;
cout << "它们之间的距离为:" << min_dist << endl;
return 0;
}
```
输出结果为:
```
距离最近的两个点为:[1, 2] 和 [3, 4]
它们之间的距离为:2.82843
```
阅读全文