pcl-qt使用QVTKWidget 与PCLVisualizer 显示雷达点云
#ifndef PCLVIEWER_H
#define PCLVIEWER_H
#include "defines.h"
#include <iostream>
#include "radarserviceprovider.h"
#include "radarserviceprovider32.h"
#include "radarserviceproviderbase.h"
// Qt
#include <QWidget>
#include <QObject>
#include <QTimer> // Point Cloud Library
//#include "pcl/visualization/pcl_visualizer.h"
#include "pcl/pcl_visualizer.h"
#include <vtkRenderWindow.h>
#include<QMutex>
#include<QDialog>
#include "QVTKWidget.h"
class vtkRenderer;
class vtkRenderWindowInteractor;
class vtkImageViewer2;
#define MAX_READ_LENGTH 5000
namespace Ui
{
class PCLViewer;
}; class PCLViewer : public QVTKWidget
{
Q_OBJECT public:
EIGEN_MAKE_ALIGNED_OPERATOR_NEW explicit PCLViewer (QWidget *parent = ,int width =,int height =);
~PCLViewer (); protected:
boost::shared_ptr<pcl::visualization::PCLVisualizer>
m_viewerOrg;
PointCloudT::Ptr m_cloudOrg;
private slots: void combineRadarData(); private: int m_height;
int m_width; PointCloudT m_pOrgData;
PointCloudT m_ptestData;
bool m_frontArrivedFlag; //ǰ�״����ݵ�����ֵ
bool m_backArrivedFlag; // ���״����ݵ�����־ int m_cubeSize;
QStringList m_idList;
QStringList m_idSituationList;
pcl::visualization::Camera m_cam; bool m_viewFollow = true;
QTimer *m_timer;
QMutex m_lidarBackMutex;
QMutex m_lidarfrontMutex;
QMutex m_situationTargetsMutex;
QMutex m_lidarTargetsMutex; }; #endif // PCLVIEWER_H
项目是两个雷达数据一起显示的。
#include "pclviewer.h"
#include <vtkOutputWindow.h>
#include <vtkPolyDataAlgorithm.h>
#include "service.h"
#include <QFile>
#include<QFileDevice>
#include<QXmlStreamReader>
#include"config.h"
#include "src/datacache.h"
#include<QMessageBox>
#include "service.h"
#include<QMutexLocker>
#include"math.h"
#include "vtkRenderer.h"
#include "vtkRenderWindowInteractor.h"
#include "vtkConeSource.h" #include <vtkImageViewer2.h>
#include <vtkPNGReader.h> #define MAX_POINT_NUM 1
PCLViewer::PCLViewer (QWidget *parent, int width, int height) :
QVTKWidget(parent),m_frontArrivedFlag(false),m_backArrivedFlag(false),
m_width(width),m_height(height)
{
qDebug()<<"width:height"<<width<<":"<<height;
this->setFixedSize(width,height);
m_cubeSize =0; vtkOutputWindow::SetGlobalWarningDisplay(0);
m_cloudOrg.reset(new PointCloudT);
m_cloudOrg->points.resize(MAX_POINT_NUM);
m_viewerOrg.reset (new pcl::visualization::PCLVisualizer ("viewer", false));
this->SetRenderWindow (m_viewerOrg->getRenderWindow ());
m_viewerOrg->setupInteractor (this->GetInteractor (), this->GetRenderWindow ()); m_viewerOrg->resetCamera(); m_viewerOrg->addPointCloud (m_cloudOrg, "cloud"); m_viewerOrg->setCameraPosition(0, 0, 72, 0, 1, 0, 0); std::vector<pcl::visualization::Camera> cam;
m_viewerOrg->getCameras(cam);
m_cam =cam[0]; } void PCLViewer::combineRadarData()
{
if(m_viewFollow)
{
float offsetx = 视觉x坐标 ;
float offsety = 视觉y坐标; m_cam.pos[0] = offsetx;
m_cam.pos[1]= offsety;
m_cam.pos[2]=72;
m_cam.focal[0] = offsetx;
m_cam.focal[1]= offsety;
m_cam.focal[2]=0;
m_cam.view[0]=0;
m_cam.view[1]=1;
m_cam.view[2]=0;
m_viewerOrg->setCameraParameters(m_cam);
} if(m_threadList.count()>0) // m_threadList接收线程列表
{
PointCloudT::Ptr data =m_threadList.at(0)->readData();
PointCloudT combine = *data;
for(int i =1;i<m_threadList.count();i++ )
{
PointCloudT::Ptr backData = m_threadList.at(i)->readData() ;
combine += *backData;
}
PointCloudT::Ptr pCombine = combine.makeShared();
m_viewerOrg->updatePointCloud(pCombine, "cloud");
this->update();
} for(auto p: m_threadList)
{
p->setDataUsed();
} }
pcl-qt使用QVTKWidget 与PCLVisualizer 显示雷达点云的更多相关文章
- PCL+Qt+VS可视化点云
前言 Point Cloud Library (PCL)是一个功能强大的开源C++库,假设可以使用好PCL将会对我们在LiDAR数据处理领域的研究产生巨大帮助.LiDAR技术经过几十年的发展.眼下国内 ...
- pcl计算样点法向并显示
利用最小二乘法估计样点表面法向,并显示 #include <pcl/point_types.h> #include <pcl/io/pcd_io.h> #include < ...
- Qt flash_eraseall nandwrite 进度条显示擦除、烧录
/***************************************************************************** * Qt flash_eraseall n ...
- 使用 Qt 获取 UDP 数据并显示成图片(2)
本文首发于 BriFuture 的 个人博客 在我的前一篇文章 使用 Qt 获取 UDP 数据并显示成图片 中,我讲了如何用 Python 模拟发送数据,如何在 Qt 中高效的接收 UDP 数据包并将 ...
- 解析 Qt 字库移植并能显示中文 (下篇)
原文http://mobile.51cto.com/symbian-272563.htm 本文介绍的是Qt 字库移植并能显示中文,需要的字体库文件,一般是多个.具体移植那一个,看你使用的字库是什么了, ...
- 解析 Qt 字库移植并能显示中文 (上篇)
原文http://mobile.51cto.com/symbian-272552.htm 本文介绍的是Qt 字库移植并能显示中文,需要的字体库文件,一般是多个.具体移植那一个,看你使用的字库是什么了, ...
- 在c++MFC下用PCL显示操作点云文件 MFC对话框显示操作PCL点云
原文作者:aircraft 原文地址:https://www.cnblogs.com/DOMLX/p/13115873.html 第一步 下载PCL库 我的版本是1.8.1的 你都要MFC下跑PCL ...
- Qt 学习之路 :可视化显示数据库数据
前面我们用了两个章节介绍了 Qt 提供的两种操作数据库的方法.显然,使用QSqlQuery的方式更灵活,功能更强大,而使用QSqlTableModel则更简单,更方便与 model/view 结合使用 ...
- Qt on Android:让 Qt Widgets 和 Qt Quick 应用全屏显示
Android 系统版本号非常多,较新的 4.4 ,较老的 2.3 ,都有人用. Qt on Android 开发的 Android 应用.默认在 Android 设备上是非全屏的. 而有些应用的需求 ...
随机推荐
- SpringBoot项目jar启动端口设置
SpringBoot项目打包后,在target下生成的jar文件可以使用 Java - jar 直接启动,指定端口号配置 java -jar epjs-eureka.jar --server.port ...
- C# 值类型和引用类型等值判断
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...
- SpringICO和DI区别
学习过Spring框架的人一定都会听过Spring的IoC(控制反转) .DI(依赖注入)这两个概念,对于初学Spring的人来说,总觉得IoC .DI这两个概念是模糊不清的,是很难理解的,今天和大家 ...
- ChipGenius 识别U盘主控信息
ChipGenius 识别U盘主控信息 ================== End
- 可分离滤波器设计高斯滤波 CUDA程序优化, 实验记录
环境:RTX2060 ,1920X1080p ,循环10次, kernal_size=8 一 .测试前128个线程拷贝到dst数据的性能 ,只测试行卷积, block=(128+2r)X1 1. 使 ...
- dubbo源码阅读之服务导出
dubbo服务导出 常见的使用dubbo的方式就是通过spring配置文件进行配置.例如下面这样 <?xml version="1.0" encoding="UTF ...
- HP-UX 解压缩tar.gz
对于tar.gz包分两步: gunzip *.tar.gz 解压为tar包 tar xf *.tar 解压完成
- plsql developer中如何设置sql window显示行号
转自:https://blog.csdn.net/qq_31302091/article/details/74931828 英文版的plsql developer中,很多时候,很多功能不去用,都不知道 ...
- 朴素贝叶斯算法源码分析及代码实战【python sklearn/spark ML】
一.简介 贝叶斯定理是关于随机事件A和事件B的条件概率的一个定理.通常在事件A发生的前提下事件B发生的概率,与在事件B发生的前提下事件A发生的概率是不一致的.然而,这两者之间有确定的关系,贝叶斯定理就 ...
- USB之基本协议和数据波形1
============= 本系列参考 ============= <圈圈教你玩USB>.<Linux那些事儿之我是USB> 协议文档:https://www.usb.or ...