使用QT搭建點雲顯示框架系列二 窗體分割顯示

2021-08-14 13:41:53 字數 2155 閱讀 4097

想看乾貨的童鞋們可以跳過這一段。再簡單說一下為毛用qglviewer,筆者是個opengl小白,為了搭建qt的opengles2的點雲平台,費了好大的功夫,最後相機也做得不怎麼樣。而筆者有一天突發奇想想要學cgal,我發現環境裡面有個一叫做qglviewer的東西。開啟一看,哇,相機做的不錯,可以選點,可以旋轉平移縮放,光照也做得不錯,所以乾脆就用這個得了。於是乎花了一天的時間摸索著把庫配好,開始了qglviewer學習。然而qglviewer仍然是基於傳統opengl的,顯示速度仍然有限,我們後期還要做很多優化。現在先不說這麼多。

好,那麼說一下需求。我們有時需要分兩個窗體顯示。在其中乙個窗體裡面選點雲,然後在另乙個窗體裡面對影象進行操作,最後進行融合。那麼這個效果出來應該是這個樣子,我們先上效果:

我們發現左邊是qglviewer的那一坨翔,然後右邊就可以放我們的其他東西了。本人是用mainwindow作為centerwidget做出的這乙個效果。整個工程叫做ninjascarlet_glviewerframwork,原始碼以及可執行檔案都完全分享給各位,不用謝了,我是活雷鋒:

然後我把它作為中心窗體,放到了主窗體裡面去。我把中心窗體的核心**放上來。

首先是h檔案:

#ifndef scarlet_centerwindow_h

#define scarlet_centerwindow_h

#include #include "scarletglviewer.h"

using namespace std;

using namespace qglviewer;

namespace ui

typedef enum

enum_whatfile;

class scarlet_centerwindow : public qmainwindow

;#endif // scarlet_centerwindow_h

然後是cpp檔案:

#include "scarlet_centerwindow.h"

#include "ui_scarlet_centerwindow.h"

#include #include #include #include #include qlistg_cloudsuffixlist;

qlistg_imgsuffixslist;

scarlet_centerwindow::scarlet_centerwindow(qwidget *parent) :

qmainwindow(parent),

ui(new ui::scarlet_centerwindow)

void load_suffix()

void scarlet_centerwindow::start()

//刪除mainwindow的中心窗體

void scarlet_centerwindow::do_deletecenterwidget()

//給控制項設定背景顏色

void scarlet_centerwindow::do_setbackgroundcolor(qwidget* widgettoset,qcolor colortoset)

//設定中心窗體

void scarlet_centerwindow::do_setcenterwidget(qwidget* viewer)

void scarlet_centerwindow::do_setcenterwidget(qwidget* viewer1 ,qwidget*viewer2)

enum_whatfile scarlet_centerwindow::whatfile(qstring stringtoanalyse)

else

return is_notfile;

}qstring generatefilterfromlist(qlistsuffixlist)

bool scarlet_centerwindow::slot_openfile()

{ qstringlist filenames = do_openfiledlg();

bool ifsuccess;

for(int i=0;i

使用std vector優化點雲動畫顯示一例

使用std vector應該知道幾點 1 記憶體連續的容器,有點像陣列 2 與std list相比,插入和刪除元素比較慢 因為資料遷移 3 新增元素可能會引發記憶體分配和資料遷移。anycad api pointcloudnode使用floatlist 及std vector來儲存一些列的點 x0,...

點雲庫PCL原始碼中的框架搭建思想

點雲庫pcl是基於c 的重度模板庫,一般將函式的定義與宣告放在.h檔案中,函式的實現放在.hpp或.cpp檔案中。以函式transformpointcloud 為例,此函式的功能為將點雲按變換矩陣進行變換,為點雲的拼接做準備。h中函式的定義 template void transformpointc...

PCL 學習筆記 使用 PCL 來顯示點雲

pcl 裡面使用的一些小技巧,可惜我現在才知道。記下來 方便以後檢視吧。當你得到了一些點雲之後怎麼去快速直觀的看到 點雲的效果呢?有一些比較好的小的技巧。1.顯示乙個點雲的方法 pcl viewer cloud cluster 0.pcd 2.多個點雲在一起顯示的方法 pcl viewer mult...