OpenCV 4.11.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))
 在指定窗口中显示图像。
 
模板<typename _Tp >
bool cv::viz::isNan (const Point3_< _Tp > &p)
 检查浮点/双精度值是否为 NaN。
 
模板<typename _Tp , int cn>
bool cv::viz::isNan (const Vec< _Tp, cn > &v)
 检查浮点/双精度值是否为 NaN。
 
bool cv::viz::isNan (double x)
 检查浮点/双精度值是否为 NaN。
 
bool cv::viz::isNan (float x)
 检查浮点/双精度值是否为 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,
输入数组 图像,
const Size & window_size = Size(-1, -1) )

#include <opencv2/viz/vizcore.hpp>

在指定窗口中显示图像。

◆ isNan() [1/4]

模板<typename _Tp >
bool cv::viz::isNan ( const Point3_< _Tp > & p)
内联

#include <opencv2/viz/vizcore.hpp>

检查浮点/双精度值是否为 NaN。

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

◆ isNan() [2/4]

模板<typename _Tp , int cn>
bool cv::viz::isNan ( const Vec< _Tp, cn > & v)
内联

#include <opencv2/viz/vizcore.hpp>

检查浮点/双精度值是否为 NaN。

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

◆ isNan() [3/4]

bool cv::viz::isNan ( 双精度浮点数 x)
内联

#include <opencv2/viz/vizcore.hpp>

检查浮点/双精度值是否为 NaN。

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

◆ isNan() [4/4]

bool cv::viz::isNan ( 单精度浮点数 x)
内联

#include <opencv2/viz/vizcore.hpp>

检查浮点/双精度值是否为 NaN。

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

◆ makeCameraPose()

Affine3d cv::viz::makeCameraPose ( const Vec3d & 位置,
const Vec3d & 焦点,
const Vec3d & y_dir )

#include <opencv2/viz/vizcore.hpp>

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

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

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

◆ makeTransformToGlobal()

Affine3d cv::viz::makeTransformToGlobal ( const Vec3d & x轴,
const Vec3d & y轴,
const Vec3d & z轴,
const Vec3d & origin = Vec3d::all(0) )

#include <opencv2/viz/vizcore.hpp>

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

参数
x轴全局坐标系中的X轴向量。
y轴全局坐标系中的Y轴向量。
z轴全局坐标系中的Z轴向量。
原点全局坐标系中坐标系的原点。
返回值
一个仿射变换,描述全局坐标系和给定坐标系之间的变换。返回的变换可以将给定坐标系中的点变换到全局坐标系。

◆ readCloud()

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

#include <opencv2/viz/vizcore.hpp>

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

◆ readMesh()

Mesh cv::viz::readMesh ( const String & 文件)

#include <opencv2/viz/vizcore.hpp>

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

◆ readPose()

bool cv::viz::readPose ( const String & 文件,
Affine3d & 姿态,
const String & tag = "pose" )

#include <opencv2/viz/vizcore.hpp>

读取/写入姿态和轨迹。

参数
文件cv::FileStorage支持的类型的文件名。
姿态输出矩阵。
标签文件中姿态的名称。

◆ readTrajectory()

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

#include <opencv2/viz/vizcore.hpp>

采用向量<Affine3<T>>,其中T = float/double,并从一系列文件中加载姿态

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

◆ unregisterAllWindows()

void cv::viz::unregisterAllWindows ( )

#include <opencv2/viz/vizcore.hpp>

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

◆ writeCloud()

void cv::viz::writeCloud ( const String & 文件,
输入数组 ,
输入数组 colors = noArray(),
输入数组 normals = noArray(),
布尔值 binary = false )

#include <opencv2/viz/vizcore.hpp>

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

参数
文件带有扩展名的文件名。支持的格式:PLY、XYZ和OBJ。
支持的深度:CV_32F和CV_64F。支持的通道:3和4。
颜色仅PLY格式使用。支持的深度:CV_8U。支持的通道:1、3和4。
normals仅PLY和OBJ格式使用。支持的深度:CV_32F和CV_64F。支持的通道:3和4。
二进制仅用于PLY格式。

◆ writePose()

void cv::viz::writePose ( const String & 文件,
const Affine3d & 姿态,
const String & tag = "pose" )

#include <opencv2/viz/vizcore.hpp>

参数
文件文件名。
姿态输入矩阵。
标签要保存到给定文件的姿态的名称。

◆ writeTrajectory()

void cv::viz::writeTrajectory ( 输入数组 轨迹,
const String & files_format = "pose%05d.xml",
整数 start = 0,
const String & tag = "pose" )

#include <opencv2/viz/vizcore.hpp>

采用向量<Affine3<T>>,其中T = float/double,并写入具有给定文件名格式的一系列文件

参数
轨迹包含姿态列表的轨迹。它可以是
  • 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
开始files_format 的初始计数器。
标签文件中矩阵的名称。