OpenCV 4.13.0
開源計算機視覺庫 (Open Source Computer Vision)
正在載入...
正在搜尋...
未找到匹配項
3D 視覺化器

主題

 Widget
 

詳細說明

本節描述了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")
 

函式文件 (Function Documentation)

◆ 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 影像,
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)
內聯

#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)
內聯

#include <opencv2/viz/vizcore.hpp>

檢查 float/double 值是否為 nan。

引數
v如果向量中 任何 元素為 nan,則返回 true。
此函式的呼叫圖

◆ isNan() [3/4]

bool cv::viz::isNan ( double x)
內聯

#include <opencv2/viz/vizcore.hpp>

檢查 float/double 值是否為 nan。

引數
x如果為 nan,則返回 true。

◆ isNan() [4/4]

bool cv::viz::isNan ( float x)
內聯

#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_xX 軸向量在全域性座標系中。
axis_yY 軸向量在全域性座標系中。
axis_zZ 軸向量在全域性座標系中。
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>

讀/寫位姿和軌跡。

引數
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>

接受 vector<Affine3<T>>,其中 T = float/double,並從檔案序列載入位姿

引數
traj包含位姿列表的輸出陣列。可以是
  • std::vector<cv::Affine3f>, std::vector<cv::Affine3d>
  • cv::Mat
files_format用於構造檔名的格式說明符字串。字串中唯一的佔位符應支援 int
startfiles_format 的起始計數器。必須大於或等於 0。
end (結束迭代器)files_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>

接受 vector<Affine3<T>>,其中 T = float/double,並將其寫入具有給定檔名格式的檔案序列

引數
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檔案中的矩陣名稱。