OpenCV的viz库学习(一)
学习目标
这次学习中将学会下面三部分:
- 添加一些部件到可视化窗口
- 使用Affine3设置部件的姿势
- 部件沿轴旋转与平移
代码
#include <opencv2/viz.hpp>
#include <opencv2/calib3d.hpp>
#include <iostream>
using namespace cv;
using namespace std;
static 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;
}
解释
- 创建一个可视化窗口
viz::Viz3d myWindow("Coordinate Frame");
- 使用CoordinateSystemWidget在窗口中显示坐标轴
myWindow.showWidget("Coordinate Widget", viz::WCoordinateSystem());
- 展示一条线,这条线代表轴(1,1,1)
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);
- 创建一个旋转矩阵
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;
...
Mat rot_mat;
Rodrigues(rot_vec, rot_mat);
- 使用Affine3f设置立方体的姿势
Affine3f pose(rot_mat, Vec3f(translation, translation, translation));
myWindow.setWidgetPose("Cube Widget", pose);
- 使用wasStopped和spinOnce对旋转进行动画处理
while(!myWindow.wasStopped())
{...myWindow.spinOnce(1, true);
}
结果
OpenCV的viz库学习(一)相关推荐
- OpenCV与AIPCV库——学习笔记(一)
本专题是学习Algorithms for Image Processing and Computer Vision的笔记. AIPCV是书名的缩写. 使用OpenCV时,需要了解的关键细节是数据结构的 ...
- OpenCV的viz库学习(二)
学习目标 这次学习中将学会下面三部分: 如何使用makeTransformToGlobal计算位姿 如何使用makeCameraPose和Viz3d :: setViewerPose 如何通过轴和视锥 ...
- 利用OpenCV实现基于深度学习的超分辨率处理
点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 OpenCV是一个非常强大的计算机视觉处理的工具库.很多小伙伴在入 ...
- 库编译:opencv 交叉编译静态库
opencv 交叉编译静态库 一 概述 二 下载 opencv 三 编译 1 安装Opencv依赖环境 2 安装Cmake 3 运行Camke 配置opencv编译项 (1) 新建 build 文件夹 ...
- opencv动态目标跟踪学习总结
用opencv实现对视频中动态目标的追踪 第一步,是要建立一个编程环境,然后加载opencv的库路径等等.具体步骤在 http://www.opencv.org.cn/ 的"安装" ...
- 图像工程课程设计 基于 OpenCV 、 Qt 库实现的图像处理软件 大学编程作业(TUST 天津科技大学 2023年)
基于 OpenCV . Qt 库实现的图像处理软件 目录 基于 OpenCV . Qt 库实现的图像处理软件 一.项目简介 二.项目要求 三.项目源码 四.交流学习 图像处理工具说明文档 基于 Ope ...
- 《PCL点云库学习VS2010(X64)》Part 37 FLANN——快速最近邻搜索库
<PCL点云库学习&VS2010(X64)>Part 37 FLANN--快速最近邻搜索库 一.介绍 该算法库在OpenCV和PCL等开源库中应用较广,是PCL的默认安装库之一.与 ...
- Py之cv2:cv2(OpenCV,opencv-python)库的简介、安装、使用方法(常见函数、图像基本运算等)最强详细攻略
Py之cv2:cv2(OpenCV,opencv-python)库的简介.安装.使用方法(常见函数.图像基本运算等)最强详细攻略 目录 cv2(OpenCV,opencv-python)库的简介 1. ...
- 【libevent】libevent库学习总结(一)——基础
libevent库学习总结(一)--基础 一.基础 1.1. 介绍 Libevent是一个用于开发可伸缩网络服务器的事件通知库.Libevent API提供了一种机制来执行回调函数,当某个特定事件发生 ...
最新文章
- 算法导论中求解时间复杂度的三种方法
- SAP-ABAP程序发送邮件
- Apache应用实例:建立yum服务器
- 在html标签中写三元运算符,如何在剃须刀中使用三元运算符(特别是在HTML属性上)?...
- 数据库(5)SQL约束
- Oracle数据库迁移:异构传输表空间TTS HP-UX迁移至Redhat Linux 7.7
- Win2003远程桌面报错:RPC错误 解决办法
- 移动设备尚未形成DDoS的3个原因
- declare-styleable中format详解
- 两台笔记本用wifi建立局域网_无线通信技术——WiFi
- 淄博联海城企业文件图纸数据信息透明加密系统
- COSNET: Connecting Heterogeneous Social Networks with Local and Global Consistency 论文阅读笔记
- Excel-VBA 快速上手(三、数组和字典)
- oracle 金,炼数成金深入Oracle视频课程
- HDU——2546 饭卡
- 软件工程之软件开发和软件测试模型
- Java批量导出word压缩后的zip文件
- Android 手游聚合SDK那些事
- 史上最全的LTspice安装教程
- greendao出现Failed to change locale for db ‘/data/data/xxx/databases/xxx.db‘ to ‘zh_CN‘.