vector<Point3d> points;如何显示这些点
时间: 2024-03-07 11:50:10 浏览: 99
分别用暴力法和分治法 求解最近点对问题 C++代码 网盘链接
如果你想在OpenCV中显示`vector<Point3d>`类型的三维点,可以使用`cv::viz`模块中的`cv::viz::showWidget`函数。具体实现步骤如下:
1. 创建一个`cv::viz::WCloud`类型的点云对象,并将`vector<Point3d>`类型的三维点数据赋值给它:
```
cv::viz::WCloud cloud_widget(points);
```
2. 创建一个`cv::viz::Viz3d`类型的窗口对象:
```
cv::viz::Viz3d window("Point Cloud");
```
3. 将点云对象添加到窗口中:
```
window.showWidget("cloud", cloud_widget);
```
4. 调用`cv::viz::spinOnce`函数来显示窗口:
```
cv::viz::spinOnce(1, true);
```
第一个参数是等待显示的时间,单位为毫秒,这里设为1毫秒。第二个参数表示是否等待用户输入才继续执行程序。
完整代码如下:
```
#include <opencv2/opencv.hpp>
#include <opencv2/viz.hpp>
int main()
{
// 读取三维点数据
std::vector<cv::Point3d> points;
// ...
// 创建点云对象
cv::viz::WCloud cloud_widget(points);
// 创建窗口
cv::viz::Viz3d window("Point Cloud");
// 添加点云到窗口中
window.showWidget("cloud", cloud_widget);
// 显示窗口
cv::viz::spinOnce(1, true);
return 0;
}
```
执行程序后,会弹出一个名为"Point Cloud"的窗口,其中显示了三维点云的图像。如果需要将窗口保持显示状态,可以在`spinOnce`函数之后添加一个`cv::waitKey`函数来等待用户输入,例如:
```
cv::viz::spinOnce(1, true);
cv::waitKey(0);
```
阅读全文