VTK 面繪製 顯示人頭

2021-06-28 15:42:14 字數 3279 閱讀 5012

// rawresolution.cpp : 定義控制台應用程式的入口點。

//#include "stdafx.h"

#include

using namespace std;

#include "vtkunsignedchararray.h"

#include "vtkpiecewisefunction.h"

#include "vtkcolortransferfunction.h"

#include "vtkvolumeraycastcompositefunction.h"

#include "vtkimagedata.h"

#include "vtkvolumeproperty.h"

#include "vtkvolume.h"

#include "vtkrenderwindow.h"

#include "vtkrenderer.h"

#include "vtkrenderwindowinteractor.h"

#include "vtkunsignedshortarray.h"

#include "vtkpointdata.h"

#include "vtkvolume16reader.h"

#include "vtkmarchingcubes.h"

#include "vtkstripper.h"

#include "vtkproperty.h"

#include "vtkcamera.h"

#include "vtkboxwidget.h"

const int dim=50;

int _tmain(int argc, _tchar* argv)

//int raw_header[4];

//fread(raw_header,sizeof(int),4,file);

raw檔案的前邊16個位元組儲存的是 寬度 高度 層數  乙個資料所佔位元組

//width  = raw_header[0];

//height = raw_header[1];

//slices = raw_header[2];

//bits   = raw_header[3];

//long datalength=1l*width*height*slices;

//unsigned char *data1=new unsigned char[datalength];

//fread(data1,datalength,1,file);

//fclose(file);

//cout<<"width:"//讀取二維切片資料序列

vtkvolume16reader *reader = vtkvolume16reader::new();

reader->setdatadimensions(64, 64); //設定畫素

reader->setdatabyteordertolittleendian();

reader->setfileprefix("headsq\\quarter");//設定讀取路徑

reader->setimagerange(1, 93);

reader->setdataspacing(3.2, 3.2, 1.5);

//抽取等值面為骨頭的資訊

vtkmarchingcubes *boneextractor = vtkmarchingcubes::new();

boneextractor->setinputconnection(reader->getoutputport());

boneextractor->setvalue(0,500); //設定提取的等值資訊

//剔除舊的或廢除的資料單元,提高繪製速度

vtkstripper *bonestripper = vtkstripper::new(); //三角帶連線

bonestripper->setinputconnection(boneextractor->getoutputport());

//建立對映

//建立角色

vtkactor *bone = vtkactor::new();

bone->getproperty()->setdiffusecolor(.1,.94,.52);

bone->getproperty()->setspecular(.3);

bone->getproperty()->setspecularpower(20);

//標準句子

//定義繪製器

vtkrenderer *arenderer = vtkrenderer::new();

//定義繪製視窗

vtkrenderwindow *renwin = vtkrenderwindow::new();

renwin->addrenderer(arenderer);

//定義窗**互器

vtkrenderwindowinteractor *iren = vtkrenderwindowinteractor::new();

iren->setrenderwindow(renwin);

//建立乙個camera

vtkcamera *acamera = vtkcamera::new();

acamera->setviewup(0,0,-1);

acamera->setposition(0,1,0);

acamera->setfocalpoint(0,0,0);

arenderer->addactor(bone);

arenderer->setactivecamera(acamera);

arenderer->resetcamera();

acamera->dolly(1.5);

arenderer->setbackground(0,0,0);

arenderer->resetcameraclippingrange();

vtkboxwidget *boxwidget = vtkboxwidget::new();

boxwidget->setinteractor(iren);

boxwidget->setplacefactor(1.25);

boxwidget->setprop3d(bone);

boxwidget->placewidget();

iren->initialize();

iren->start();

reader->delete();

iren->delete();

system("pause");

return 0;

}

vtk面繪製的實現

如題 將圖層資料 vtkimagedata 生成3d物件 vtkpolydata 示例 如下 vtksmartpointer pmarchingcubes vtksmartpointer new pmarchingcubes setinputdata vtkimagedata pmarchingcu...

根據來電號碼顯示人名

根據來電號碼顯示人名 描述 當手機來電時會根據 號碼自動匹配儲存在 本中的人名,進行 號碼匹配時一般會根據號碼的後多少位進行匹配,因為不同的網路環境下發的號碼可能會不同,比如,有的地區顯示區號,有的可能不顯示區號等。該題目要求如下 1 對來電號碼進行後n位的匹配,n通過引數讀取獲得,輸出所有匹配號碼...

VTK多線條顯示

1 開發環境 計算機系統 win8.1 64位 qt版本 5.2.1 qt creator版本 3.0.1 vtk版本 6.2.0 2 問題描述 vtk中可以是實現畫線條的類有vtkline和vtkpolyline。畫單條線比較容易實現,但是要畫多根線,使其構成樹形,就比較麻煩。根據現有的資料,達到...