需要預裝opengl環境和pcl環境
整體思路是 opengl讀取off轉為obj檔案,然後vtk讀取obj檔案下取樣為點雲,運用pcl生成深度圖並儲存,**呼叫需要自行設定讀取路徑
#include
//#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
//儲存深度影象
#include
#include
#include
#include
#include
#include
using namespace std;
using namespace pcl;
using namespace pcl:
:io;
using namespace pcl:
:console;
float vertex[
100000][
3];//讀取的off最多10萬點、面,無需要可以更改
int su***ce[
100000][
3];void
read_off_file
(string input)
//定義了obj,需與後面讀入的檔名保持一致
fout.
open
("test.obj");
//建立乙個中轉檔案
while
(fout.
fail()
)dowhile
(fin.
get()!=
'\n');
fin >> vertex_num >> su***ce_num >> other_num;
//cout << vertex_num;
for(i =
0; i < vertex_num; i++)}
for(i =
0; i < su***ce_num; i++)}
for(i =
0; i < vertex_num; i++
) fout.
put(
'\n');
} fout.
put(
'\n');
//注意控制換行
for(i =
0; i < su***ce_num; i++
) fout.
put(
'\n');
} fin.
close()
; fout.
close()
;//cout << "already covert to obj !" << endl;
}inline
double
uniform_deviate
(int seed)
inline
void
randompoint********
(float a1,
float a2,
float a3,
float b1,
float b2,
float b3,
float c1,
float c2,
float c3,
eigen:
:vector4f& p)
inline
void
randpsu***ce
(vtkpolydata * polydata, std:
:vector<
double
>
* cumulativeareas,
double totalarea, eigen:
:vector4f& p, bool calcnormal, eigen:
:vector3f& n)
randompoint********
(float
(a[0])
,float
(a[1])
,float
(a[2])
,float
(b[0])
,float
(b[1])
,float
(b[2])
,float
(c[0])
,float
(c[1])
,float
(c[2])
, p);}
void
uniform_sampling
(vtksmartpointer polydata, size_t n_samples, bool calc_normal, pcl:
:pointcloud:pointnormal>
& cloud_out)
cloud_out.points.
resize
(n_samples)
; cloud_out.width = static_cast:uint32_t>
(n_samples)
; cloud_out.height =1;
for(i =
0; i < n_samples; i++)}
}const
int default_number_samples =
100000
;//定義轉換引數
const
float default_leaf_size =
0.002f
;//需要設定輸出位置,預設在d:\git\regcnn\datadepth
//不需要預先在目錄下建立text.obj
//出現訪問衝突,多半陣列溢位
intmain
(int argc,
char
**ar**)
data_num++
;//到1資料夾}
fout1.
close()
;}
opengl讀取off檔案
1.定義結構體 typedef struct vertex vertex 定義點的結構體 typedef struct face 構造器 int nverts 麵中包含頂點個數 vertex verts 麵中包含的頂點陣列 float normal 3 存放法向量資訊 face 定義面的結構體 ty...
OpenGL讀取Obj模型檔案
想要順利讀取obj模型檔案,先要了解這種檔案的格式,obj檔案格式是非常簡單的。這種檔案以純文字的形式儲存了模型的頂點 法線和紋理座標和材質使用資訊。obj檔案的每一行,都有極其相似的格式。在obj檔案中,每行的格式如下 字首 引數1 引數2 引數3 其中,字首標識了這一行所儲存的資訊型別。引數則是...
opengl讀取OBJ模型檔案
要順利讀取 obj模型檔案,先要了解obj檔案的格式。obj檔案格式是非常簡單的,它以純文字的形式儲存了模型的頂點 法線和紋理座標和材質使用資訊。obj檔案的每行的格式如下 字首引數1引數 2引數3 其中,字首標識了這一行所儲存的資訊型別。引數則是具體的資料。obj檔案常見的的字首有 v表示本行指定...