OpenCV  4.10.0
开源计算机视觉
正在加载...
正在搜索...
无匹配项
模块 | | 函数
3D 可视化器

模块

 小部件
 

详细描述

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

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

class  cv::viz::Camera
 此类封装了相机的内在参数。 更多...
 
class  cv::viz::Color
 此类表示 BGR 顺序的颜色。 更多...
 
class  cv::viz::KeyboardEvent
 此类表示键盘事件。 更多...
 
class  cv::viz::Mesh
 此类封装了网格属性,它可以从 ply 文件加载网格。: 更多...
 
class  cv::viz::MouseEvent
 此类表示鼠标事件。 更多...
 
class  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 格式。
返回值
一个包含点坐标的矩阵,深度为 CV_32F 或 CV_64F,通道数为 3 或 4,仅包含 1 行。

◆ 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>

读/写姿态和轨迹。

参数
file文件名,类型支持 cv::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::Mat 类型为 CV_32FC16 或 CV_64F16
files_format用于构建文件名格式的规范字符串。字符串中唯一的占位符应支持 int
startfiles_format 的初始计数器。
tag文件中矩阵的名称。