想看乾貨的童鞋們可以跳過這一段。再簡單說一下為毛用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...