OpenCV 4.12.0
开源计算机视觉
加载中...
搜索中...
无匹配项
3D 可视化工具

主题

 部件
 

详细描述

本节描述了 3D 可视化窗口以及用于与其交互的类和方法。

3D 可视化窗口(参见 Viz3d)用于显示部件(参见 Widget),并提供了多种方法与场景和部件进行交互。

类  cv::viz::Camera
 此相机类封装了相机的内部参数。更多...
 
类  cv::viz::Color
 此类表示 BGR 顺序的颜色。更多...
 
类  cv::viz::KeyboardEvent
 此类表示一个键盘事件。更多...
 
类  cv::viz::Mesh
 此类封装了网格属性,并且可以从 ply 文件加载网格。更多...
 
类  cv::viz::MouseEvent
 此类表示一个鼠标事件。更多...
 
类  cv::viz::Viz3d
 Viz3d 类表示一个 3D 可视化窗口。该类是隐式共享的。更多...
 

函数

void cv::viz::computeNormals (const Mesh &mesh, OutputArray normals)
 
Viz3d cv::viz::getWindowByName (const String &window_name)
 通过名称检索窗口。
 
Viz3d cv::viz::imshow (const String &window_name, InputArray image, const Size &window_size=Size(-1, -1))
 在指定窗口中显示图像。
 
template<typename _Tp >
bool cv::viz::isNan (const Point3_< _Tp > &p)
 检查 float/double 值是否为 NaN。
 
template<typename _Tp , int cn>
bool cv::viz::isNan (const Vec< _Tp, cn > &v)
 检查 float/double 值是否为 NaN。
 
bool cv::viz::isNan (double x)
 检查 float/double 值是否为 NaN。
 
bool cv::viz::isNan (float x)
 检查 float/double 值是否为 NaN。
 
Affine3d cv::viz::makeCameraPose (const Vec3d &position, const Vec3d &focal_point, const Vec3d &y_dir)
 根据位置、焦点和上方向向量构造相机姿态(有关更多信息,请参见 gluLookAt())。
 
Affine3d cv::viz::makeTransformToGlobal (const Vec3d &axis_x, const Vec3d &axis_y, const Vec3d &axis_z, const Vec3d &origin=Vec3d::all(0))
 获取坐标系数据并构建到全局坐标系的变换。
 
Mat cv::viz::readCloud (const String &file, OutputArray colors=noArray(), OutputArray normals=noArray())
 
Mesh cv::viz::readMesh (const String &file)
 读取网格。目前仅支持 ply 格式,不支持纹理加载。
 
bool cv::viz::readPose (const String &file, Affine3d &pose, const String &tag="pose")
 读/写姿态和轨迹。
 
void cv::viz::readTrajectory (OutputArray traj, const String &files_format="pose%05d.xml", int start=0, int end=INT_MAX, const String &tag="pose")
 
void cv::viz::unregisterAllWindows ()
 从内部数据库注销所有 Viz 窗口。之后,'getWindowByName()' 将创建新窗口,而不是从数据库中获取现有窗口。
 
void cv::viz::writeCloud (const String &file, InputArray cloud, InputArray colors=noArray(), InputArray normals=noArray(), bool binary=false)
 读/写点云。支持的格式:ply、xyz、obj 和 stl(只读)
 
void cv::viz::writePose (const String &file, const Affine3d &pose, const String &tag="pose")
 
void cv::viz::writeTrajectory (InputArray traj, const String &files_format="pose%05d.xml", int start=0, const String &tag="pose")
 

函数文档

◆ computeNormals()

void cv::viz::computeNormals ( const Mesh & mesh,
OutputArray normals )

#include <opencv2/viz/vizcore.hpp>

计算网格的法线

参数
mesh输入网格。
normals网格中每个点的法线,类型为 CV_64FC3。

◆ getWindowByName()

Viz3d cv::viz::getWindowByName ( const String & window_name)

#include <opencv2/viz/vizcore.hpp>

通过名称检索窗口。

参数
window_name要检索的窗口的名称。

此函数返回一个具有给定名称的 Viz3d 对象。

注意
如果具有该名称的窗口已存在,则返回该窗口。否则,将创建具有给定名称的新窗口并返回。

◆ imshow()

Viz3d cv::viz::imshow ( const String & window_name,
InputArray image,
const Size & window_size = Size(-1, -1) )

#include <opencv2/viz/vizcore.hpp>

在指定窗口中显示图像。

◆ isNan() [1/4]

template<typename _Tp >
bool cv::viz::isNan ( const Point3_< _Tp > & p)
inline

#include <opencv2/viz/vizcore.hpp>

检查 float/double 值是否为 NaN。

参数
p如果任何点的元素是 nan,则返回 true。
此函数的调用图如下

◆ isNan() [2/4]

template<typename _Tp , int cn>
bool cv::viz::isNan ( const Vec< _Tp, cn > & v)
inline

#include <opencv2/viz/vizcore.hpp>

检查 float/double 值是否为 NaN。

参数
v如果任何向量的元素是 nan,则返回 true。
此函数的调用图如下

◆ isNan() [3/4]

bool cv::viz::isNan ( double x)
inline

#include <opencv2/viz/vizcore.hpp>

检查 float/double 值是否为 NaN。

参数
x如果为 NaN,则返回 true。

◆ isNan() [4/4]

bool cv::viz::isNan ( float x)
inline

#include <opencv2/viz/vizcore.hpp>

检查 float/double 值是否为 NaN。

参数
x如果为 NaN,则返回 true。

◆ makeCameraPose()

Affine3d cv::viz::makeCameraPose ( const Vec3d & position,
const Vec3d & focal_point,
const Vec3d & y_dir )

#include <opencv2/viz/vizcore.hpp>

根据位置、焦点和上方向向量构造相机姿态(有关更多信息,请参见 gluLookAt())。

参数
position相机在全局坐标系中的位置。
focal_point相机在全局坐标系中的焦点。
y_dir相机在全局坐标系中的向上向量。

此函数返回相机在全局坐标系中的姿态。

◆ makeTransformToGlobal()

Affine3d cv::viz::makeTransformToGlobal ( const Vec3d & axis_x,
const Vec3d & axis_y,
const Vec3d & axis_z,
const Vec3d & origin = Vec3d::all(0) )

#include <opencv2/viz/vizcore.hpp>

获取坐标系数据并构建到全局坐标系的变换。

参数
axis_x全局坐标系中的 X 轴向量。
axis_y全局坐标系中的 Y 轴向量。
axis_z全局坐标系中的 Z 轴向量。
origin坐标系在全局坐标系中的原点。
返回
一个仿射变换,描述了全局坐标系与给定坐标系之间的变换。返回的变换可以将给定坐标系中的点变换到全局坐标系。

◆ readCloud()

Mat cv::viz::readCloud ( const String & file,
OutputArray colors = noArray(),
OutputArray normals = noArray() )

#include <opencv2/viz/vizcore.hpp>

参数
file带扩展名的文件名。支持的格式:PLY、XYZ、OBJ 和 STL。
colors仅供 PLY 和 STL 格式使用。
normals仅供 PLY、OBJ 和 STL 格式使用。
返回
一个 Mat,包含点坐标,深度为 CV_32F 或 CV_64F,通道数为 3 或 4,且只有 1 行。

◆ readMesh()

Mesh cv::viz::readMesh ( const String & file)

#include <opencv2/viz/vizcore.hpp>

读取网格。目前仅支持 ply 格式,不支持纹理加载。

◆ readPose()

bool cv::viz::readPose ( const String & file,
Affine3d & pose,
const String & tag = "pose" )

#include <opencv2/viz/vizcore.hpp>

读/写姿态和轨迹。

参数
filecv::FileStorage 支持的文件类型的文件名。
pose输出矩阵。
tag文件中姿态的名称。

◆ readTrajectory()

void cv::viz::readTrajectory ( OutputArray traj,
const String & files_format = "pose%05d.xml",
int start = 0,
int end = INT_MAX,
const String & tag = "pose" )

#include <opencv2/viz/vizcore.hpp>

接受 T 为 float/double 的 vector<Affine3<T>> 并从文件序列中加载姿态

参数
traj包含姿态列表的输出数组。它可以是
  • std::vector<cv::Affine3f>、std::vector<cv::Affine3d>
  • cv::Mat
files_format用于构造文件名的格式说明符字符串。字符串中唯一的占位符应支持 int 类型。
startfiles_format 的初始计数器。它必须大于或等于 0。
endfiles_format 的最终计数器。
tag文件中矩阵的名称。

◆ unregisterAllWindows()

void cv::viz::unregisterAllWindows ( )

#include <opencv2/viz/vizcore.hpp>

从内部数据库注销所有 Viz 窗口。之后,'getWindowByName()' 将创建新窗口,而不是从数据库中获取现有窗口。

◆ writeCloud()

void cv::viz::writeCloud ( const String & file,
InputArray cloud,
InputArray colors = noArray(),
InputArray normals = noArray(),
bool binary = false )

#include <opencv2/viz/vizcore.hpp>

读/写点云。支持的格式:ply、xyz、obj 和 stl(只读)

参数
file带扩展名的文件名。支持的格式:PLY、XYZ 和 OBJ。
cloud支持的深度:CV_32F 和 CV_64F。支持的通道数:3 和 4。
colors仅供 PLY 格式使用。支持的深度:CV_8U。支持的通道数:1、3 和 4。
normals仅供 PLY 和 OBJ 格式使用。支持的深度:CV_32F 和 CV_64F。支持的通道数:3 和 4。
binary仅供 PLY 格式使用。

◆ writePose()

void cv::viz::writePose ( const String & file,
const Affine3d & pose,
const String & tag = "pose" )

#include <opencv2/viz/vizcore.hpp>

参数
file文件名。
pose输入矩阵。
tag要保存到给定文件中的姿态名称。

◆ writeTrajectory()

void cv::viz::writeTrajectory ( InputArray traj,
const String & files_format = "pose%05d.xml",
int start = 0,
const String & tag = "pose" )

#include <opencv2/viz/vizcore.hpp>

接受 T 为 float/double 的 vector<Affine3<T>>,并以给定文件名格式写入文件序列

参数
traj包含姿态列表的轨迹。它可以是
  • std::vector<cv::Mat>,其中每个 cv::Mat 的类型为 CV_32F16 或 CV_64FC16
  • std::vector<cv::Affine3f>、std::vector<cv::Affine3d>
  • 类型为 CV_32FC16 或 CV_64F16 的 cv::Mat
files_format用于构造文件名的格式说明符字符串。字符串中唯一的占位符应支持 int 类型。
startfiles_format 的初始计数器。
tag文件中矩阵的名称。