#ifndef PCLVIEWER_H
#define PCLVIEWER_H
#include "defines.h"
#include
#include "radarserviceprovider.h"
#include "radarserviceprovider32.h"
#include "radarserviceproviderbase.h"
// Qt
#include
#include
#include
// Point Cloud Library
//#include "pcl/visualization/pcl_visualizer.h"
#include "pcl/pcl_visualizer.h"
#include
#include
#include
#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
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
#include
#include "service.h"
#include
#include
#include
#include"config.h"
#include "src/datacache.h"
#include
#include "service.h"
#include
#include"math.h"
#include "vtkRenderer.h"
#include "vtkRenderWindowInteractor.h"
#include "vtkConeSource.h"
#include
#include
#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"<
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
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();
}
}
手机扫一扫
移动阅读更方便
你可能感兴趣的文章