opencv-viz模块简单示例
https://docs.opencv.org/3.4/d5/dab/tutorial_sfm_trajectory_estimation.html
其它作用:
0.OpenCV可视化(Viz)——Viz环境的配置
https://blog.csdn.net/qq_29600745/article/details/112507171
1. OpenCV 可视化(Viz)——相机位置
https://blog.csdn.net/qq_29600745/article/details/109654694
2. OpenCV 可视化(Viz)——相机视锥
https://blog.csdn.net/qq_29600745/article/details/109721557
3.3.OpenCV可视化(Viz)——单目相机标定模拟
https://blog.csdn.net/qq_29600745/article/details/109745972
1
#include <opencv2/viz.hpp>
#include <iostream>
using namespace cv;
using namespace std;
void help()
{cout<< "--------------------------------------------------------------------------" << endl<< "This program shows how to launch a 3D visualization window. You can stop event loop to continue executing. "<< "You can access the same window via its name. You can run event loop for a given period of time. " << endl<< "Usage:" << endl<< "./launching_viz" << endl<< endl;
}
int main()
{help();viz::Viz3d myWindow("Viz Demo");myWindow.spin();cout << "First event loop is over" << endl;viz::Viz3d sameWindow = viz::get("Viz Demo");sameWindow.spin();cout << "Second event loop is over" << endl;sameWindow.spinOnce(1, true);while(!sameWindow.wasStopped()){sameWindow.spinOnce(1, true);}cout << "Last event loop is over" << endl;return 0;
}
2.
#include <opencv2/viz.hpp>
#include <opencv2/calib3d.hpp>
#include <iostream>
using namespace cv;
using namespace std;
void help()
{cout<< "--------------------------------------------------------------------------" << endl<< "This program shows how to visualize a cube rotated around (1,1,1) and shifted "<< "using Rodrigues vector." << endl<< "Usage:" << endl<< "./widget_pose" << endl<< endl;
}
int main()
{help();viz::Viz3d myWindow("Coordinate Frame");myWindow.showWidget("Coordinate Widget", viz::WCoordinateSystem());viz::WLine axis(Point3f(-1.0f,-1.0f,-1.0f), Point3f(1.0f,1.0f,1.0f));axis.setRenderingProperty(viz::LINE_WIDTH, 4.0);myWindow.showWidget("Line Widget", axis);viz::WCube cube_widget(Point3f(0.5,0.5,0.0), Point3f(0.0,0.0,-0.5), true, viz::Color::blue());cube_widget.setRenderingProperty(viz::LINE_WIDTH, 4.0);myWindow.showWidget("Cube Widget", cube_widget);Mat rot_vec = Mat::zeros(1,3,CV_32F);float translation_phase = 0.0, translation = 0.0;while(!myWindow.wasStopped()){/* Rotation using rodrigues */rot_vec.at<float>(0,0) += CV_PI * 0.01f;rot_vec.at<float>(0,1) += CV_PI * 0.01f;rot_vec.at<float>(0,2) += CV_PI * 0.01f;translation_phase += CV_PI * 0.01f;translation = sin(translation_phase);Mat rot_mat;Rodrigues(rot_vec, rot_mat);Affine3f pose(rot_mat, Vec3f(translation, translation, translation));myWindow.setWidgetPose("Cube Widget", pose);myWindow.spinOnce(1, true);}return 0;
}
https://youtu.be/22HKMN657U0
3.
#include <opencv2/viz.hpp>
#include <iostream>
#include <fstream>
using namespace cv;
using namespace std;
void help()
{cout<< "--------------------------------------------------------------------------" << endl<< "This program shows how to use makeTransformToGlobal() to compute required pose,"<< "how to use makeCameraPose and Viz3d::setViewerPose. You can observe the scene "<< "from camera point of view (C) or global point of view (G)" << endl<< "Usage:" << endl<< "./transformations [ G | C ]" << endl<< endl;
}
Mat cvcloud_load()
{Mat cloud(1, 1889, CV_32FC3);ifstream ifs("bunny.ply");string str;for(size_t i = 0; i < 12; ++i)getline(ifs, str);Point3f* data = cloud.ptr<cv::Point3f>();float dummy1, dummy2;for(size_t i = 0; i < 1889; ++i)ifs >> data[i].x >> data[i].y >> data[i].z >> dummy1 >> dummy2;cloud *= 5.0f;return cloud;
}
int main(int argn, char **argv)
{help();if (argn < 2){cout << "Missing arguments." << endl;return 1;}bool camera_pov = (argv[1][0] == 'C');viz::Viz3d myWindow("Coordinate Frame");myWindow.showWidget("Coordinate Widget", viz::WCoordinateSystem());Point3f cam_pos(3.0f,3.0f,3.0f), cam_focal_point(3.0f,3.0f,2.0f), cam_y_dir(-1.0f,0.0f,0.0f);Affine3f cam_pose = viz::makeCameraPose(cam_pos, cam_focal_point, cam_y_dir);Affine3f transform = viz::makeTransformToGlobal(Vec3f(0.0f,-1.0f,0.0f), Vec3f(-1.0f,0.0f,0.0f), Vec3f(0.0f,0.0f,-1.0f), cam_pos);Mat bunny_cloud = cvcloud_load();viz::WCloud cloud_widget(bunny_cloud, viz::Color::green());Affine3f cloud_pose = Affine3f().translate(Vec3f(0.0f,0.0f,3.0f));Affine3f cloud_pose_global = transform * cloud_pose;if (!camera_pov){viz::WCameraPosition cpw(0.5); // Coordinate axesviz::WCameraPosition cpw_frustum(Vec2f(0.889484, 0.523599)); // Camera frustummyWindow.showWidget("CPW", cpw, cam_pose);myWindow.showWidget("CPW_FRUSTUM", cpw_frustum, cam_pose);}myWindow.showWidget("bunny", cloud_widget, cloud_pose_global);if (camera_pov)myWindow.setViewerPose(cam_pose);myWindow.spin();return 0;
}
4.
#include <opencv2/viz.hpp>
#include <opencv2/viz/widget_accessor.hpp>
#include <iostream>
#include <vtkPoints.h>
#include <vtkTriangle.h>
#include <vtkCellArray.h>
#include <vtkPolyData.h>
#include <vtkPolyDataMapper.h>
#include <vtkIdList.h>
#include <vtkActor.h>
#include <vtkProp.h>
using namespace cv;
using namespace std;
void help()
{cout<< "--------------------------------------------------------------------------" << endl<< "This program shows how to create a custom widget. You can create your own "<< "widgets by extending Widget2D/Widget3D, and with the help of WidgetAccessor." << endl<< "Usage:" << endl<< "./creating_widgets" << endl<< endl;
}
class WTriangle : public viz::Widget3D
{public:WTriangle(const Point3f &pt1, const Point3f &pt2, const Point3f &pt3, const viz::Color & color = viz::Color::white());
};
WTriangle::WTriangle(const Point3f &pt1, const Point3f &pt2, const Point3f &pt3, const viz::Color & color)
{// Create a trianglevtkSmartPointer<vtkPoints> points = vtkSmartPointer<vtkPoints>::New();points->InsertNextPoint(pt1.x, pt1.y, pt1.z);points->InsertNextPoint(pt2.x, pt2.y, pt2.z);points->InsertNextPoint(pt3.x, pt3.y, pt3.z);vtkSmartPointer<vtkTriangle> triangle = vtkSmartPointer<vtkTriangle>::New();triangle->GetPointIds()->SetId(0,0);triangle->GetPointIds()->SetId(1,1);triangle->GetPointIds()->SetId(2,2);vtkSmartPointer<vtkCellArray> cells = vtkSmartPointer<vtkCellArray>::New();cells->InsertNextCell(triangle);// Create a polydata objectvtkSmartPointer<vtkPolyData> polyData = vtkSmartPointer<vtkPolyData>::New();// Add the geometry and topology to the polydatapolyData->SetPoints(points);polyData->SetPolys(cells);// Create mapper and actorvtkSmartPointer<vtkPolyDataMapper> mapper = vtkSmartPointer<vtkPolyDataMapper>::New();
#if VTK_MAJOR_VERSION <= 5mapper->SetInput(polyData);
#elsemapper->SetInputData(polyData);
#endifvtkSmartPointer<vtkActor> actor = vtkSmartPointer<vtkActor>::New();actor->SetMapper(mapper);// Store this actor in the widget in order that visualizer can access itviz::WidgetAccessor::setProp(*this, actor);// Set the color of the widget. This has to be called after WidgetAccessor.setColor(color);
}
int main()
{help();viz::Viz3d myWindow("Creating Widgets");WTriangle tw(Point3f(0.0,0.0,0.0), Point3f(1.0,1.0,1.0), Point3f(0.0,1.0,0.0), viz::Color::red());myWindow.showWidget("TRIANGLE", tw);myWindow.spin();return 0;
}
5.
#include <iostream>
#include <opencv2/calib3d.hpp>
#include <opencv2/viz/types.hpp>
#include <opencv2/viz/vizcore.hpp>using namespace cv;
using namespace std;int main()
{
// Create a window
viz::Viz3d myWindow("Viz Demo");// add widget
myWindow.showWidget("world", viz::WCoordinateSystem());// Draw line
viz::WLine axis(Point3f(0.f, 0.f, 0.f), Point3f(2.f, 2.f, 2.f), viz::Color::yellow());
axis.setRenderingProperty(viz::LINE_WIDTH, 1.0);
myWindow.showWidget("Line Widget", axis);// Camera coordinate
Vec3f cam_pos(2.0f, 2.0f, 2.0f), cam_focal_point(3.0f, 3.0f, 3.0f), cam_y_dir(-0.f, 0.0f, -1.0f);
Affine3f cam_pose = viz::makeCameraPose(cam_pos, cam_focal_point, cam_y_dir);
// Affine3f transform = viz::makeTransformToGlobal(Vec3f(0.0f, -1.0f, 0.0f), Vec3f(-1.0f, 0.0f, 0.0f), Vec3f(0.0f, 0.0f, -1.0f), cam_pos);viz::WCameraPosition cpw(1); // Coordinate axes
viz::WCameraPosition cpw_frustum(Vec2f(0.889484, 0.523599)); // Camera frustum
myWindow.showWidget("CPW", cpw, cam_pose);
myWindow.showWidget("CPW_FRUSTUM", cpw_frustum, cam_pose);// Start event loop
myWindow.spin();return 0;
}
opencv-viz模块简单示例相关推荐
- Python: logging日志模块简单示例
2019独角兽企业重金招聘Python工程师标准>>> Python的logging模块提供了通用的日志系统,可以方便第三方模块或者是应用使用.这个模块提供不同的日志级别,并可以采用 ...
- opencv调用basler简单示例
如下图将包含目录和库目录设置好 #include "stdafx.h" #include<opencv2/imgproc/imgproc.hpp> #include&l ...
- OpenCV学习篇2:viz模块简单用法
viz模块主要用于3D可视化显示. 首先看个简单示例程序,创建一个窗口并显示坐标系: //创建可视化窗口viz::Viz3d window1("window1");//构造一个坐标 ...
- python requests 示例_Python Requests模块的简单示例
这篇文章主要为大家详细介绍了Python Requests模块的简单示例,具有一定的参考价值,可以用来参考一下. 对python这个高级语言感兴趣的小伙伴,下面一起跟随512笔记的小编两巴掌来看看吧! ...
- boost::proto模块实现构建算术表达式的简单示例 带有占位符的评估器的测试程序
boost::proto模块实现构建算术表达式的简单示例带有占位符的评估器的测试程序 实现功能 C++实现代码 实现功能 boost::proto模块实现构建算术表达式的简单示例带有占位符的评估器的测 ...
- boost::math模块演示负二项分布使用的简单示例的测试程序
boost::math模块演示负二项分布使用的简单示例的测试程序 实现功能 C++实现代码 实现功能 boost::math模块演示负二项分布使用的简单示例的测试程序 C++实现代码 #include ...
- boost::math模块计算二项式随机变量的概率和分位数的简单示例
boost::math模块计算二项式随机变量的概率和分位数的简单示例 实现功能 C++实现代码 实现功能 boost::math模块计算二项式随机变量的概率和分位数的简单示例 C++实现代码 #inc ...
- boost::icl模块interval_map 的最简单示例是重叠计数器
boost::icl模块interval_map 的最简单示例是重叠计数器 实现功能 C++实现代码 实现功能 boost::icl模块interval_map 的最简单示例是重叠计数器 C++实现代 ...
- boost::graph模块使用write_graphviz 输出 BGL adjacency_list 的简单示例
boost::graph模块使用write_graphviz 输出 BGL adjacency_list 的简单示例 实现功能 C++实现代码 实现功能 boost::graph模块使用write_g ...
最新文章
- Redis基础、应用、第三方支持组件总结
- 【免费软件测试视频-0016】——LR系列之---协议的选择
- Pwntools的context设置与shellcode
- 详尽解析window.event对象
- flink checkpoint 恢复_干货:Flink+Kafka 0.11端到端精确一次处理语义实现
- Kingback小组冲刺博客
- C# 系统服务 删除后禁用 ,删除不彻底;删除后无法重装问题解决方案
- python多线程执行_一个Python多线程运行实例
- Java编程基础知识(一)
- 算法 | 八大排序算法,含动态图详解
- win xp系统安装在虚拟机里面无法连接网络,无本地连接问题解决
- 自学计算机基础知识需要什么书,学习计算机基础知识,我强烈推荐这三本书!...
- 夜光带你走进Jquery(十三)擅长的领域
- linux操作命令笔记
- 业务实战记录(1):帮业务人员做道Excel题
- Intel汇编-带符号乘法
- 独享云虚拟主机、共享云虚拟主机、云服务器 ECS 的区别
- java 地图api接口_Java调用百度地图API
- mysql的url参数_mysql-url参数
- 毕业设计 stm32单片机的目标检测与跟踪系统 -物联网 openmv 嵌入式
热门文章
- 基于STM32CubeMX的stm32f103c6t6液晶0.96OLED显示字母数字汉字图片显示
- 深度学习优化算法的总结与梳理(从 SGD 到 AdamW 原理和代码解读)
- 陈老师排课12A版的手工调课的方法
- win10要关闭自动更新吗?看完你就有答案了
- 计算机专业省赛一等奖有什么好处,厉害了!计算机应用专业的他获省级书法比赛一等奖...
- ubuntu20.04基础入门日记V1.0
- 2022.10.10
- input文本框--去首尾空格
- 蓬莱小课:零基础应届生如何转行学数据分析师?
- 颜色恒常性评价指标——角度误差【弧度角度】避坑