最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python?VTK映射三維模型表面距離

 更新時(shí)間:2022年04月18日 13:07:41   作者:派大大大星  
這篇文章主要介紹了Python?VTK映射三維模型表面距離,通過(guò)如何使用VTK讀取圖片計(jì)算兩個(gè)三維模型(stl)的表面距離,并將其距離值映射到模型上展開主題,需要的朋友可以參考一下

數(shù)據(jù)準(zhǔn)備: 需要準(zhǔn)備兩個(gè)stl文件、Python需要安裝vtk庫(kù)

步驟一:數(shù)據(jù)讀取 首先通過(guò)vtk.vtkSTLReader() 定義stl文件讀取接口,再通過(guò)reader1.GetOutput() 就可以獲得stl在vtk工作流的數(shù)據(jù)。

步驟二:去除重復(fù)點(diǎn) 通過(guò)vtk.vtkCleanPolyData() 可以去除模型中的重復(fù)點(diǎn)

步驟三:計(jì)算距離 使用 vtk.vtkDistancePolyDataFilter() ,使用上一步中過(guò)濾掉重復(fù)點(diǎn)后的數(shù)據(jù)作為輸入。如distanceFilter.SetInputConnection(1, clean1.GetOutputPort()), 其中第一個(gè)參數(shù)就是輸入數(shù)據(jù)的標(biāo)號(hào),從0開始計(jì)數(shù);第二個(gè)參數(shù)就是輸入的數(shù)據(jù)。我們將vtkDistancePolyDataFilter的輸出到mapper就完成距離映射了。

步驟四:顏色配置 lut = vtk.vtkLookupTable() 相當(dāng)于一個(gè)調(diào)色盤函數(shù),通過(guò)對(duì)其參數(shù)改變可以,調(diào)整最終映射的顏色范圍。 scalarBar = vtk.vtkScalarBarActor() 就是顏色條,按照前面的調(diào)色盤的結(jié)果將距離數(shù)值映射成顏色。

import vtk

input1 = vtk.vtkPolyData()
reader1 = vtk.vtkSTLReader()
reader1.SetFileName('model1.stl')
reader1.Update()
input1 = reader1.GetOutput()  # 讀取模型A

input2 = vtk.vtkPolyData()
reader2 = vtk.vtkSTLReader()
reader2.SetFileName('model2.stl')
reader2.Update()
input2 = reader2.GetOutput()  # 讀取模型B


# 數(shù)據(jù)合并,可以合并顯示兩個(gè)模型
clean1 = vtk.vtkCleanPolyData()
clean1.SetInputData(input1)

clean2 = vtk.vtkCleanPolyData()
clean2.SetInputData(input2)

distanceFilter = vtk.vtkDistancePolyDataFilter()

distanceFilter.SetInputConnection(1, clean1.GetOutputPort())
distanceFilter.SetInputConnection(0, clean2.GetOutputPort())
distanceFilter.SignedDistanceOff()
distanceFilter.Update()  # 計(jì)算距離
distanceFilter.GetOutputPort()
mapper = vtk.vtkPolyDataMapper()  # 配置mapper
mapper.SetInputConnection(distanceFilter.GetOutputPort())
mapper.SetScalarRange(  # 設(shè)置顏色映射范圍
    distanceFilter.GetOutput().GetPointData().GetScalars().GetRange()[0],
    distanceFilter.GetOutput().GetPointData().GetScalars().GetRange()[1])
actor = vtk.vtkActor()
actor.SetMapper(mapper)
actor1 = vtk.vtkActor()
actor1.SetMapper(mapper)
lut = vtk.vtkLookupTable()
lut.SetHueRange(0.2, 0.7)  # 映射的顏色變換參數(shù)(自己調(diào)顏色)
# lut.SetAlphaRange(1.0, 1.0)
# lut.SetValueRange(1.0, 1.0)
# lut.SetSaturationRange(1.0, 1.0)
# lut.SetNumberOfTableValues(256)
mapper.SetLookupTable(lut)
mapper2 = vtk.vtkPolyDataMapper()
mapper2.SetInputData((distanceFilter.GetSecondDistanceOutput()))
mapper2.SetScalarRange(  # 設(shè)置顏色映射范圍
    distanceFilter.GetSecondDistanceOutput().GetPointData().GetScalars().GetRange()[0],
    distanceFilter.GetSecondDistanceOutput().GetPointData().GetScalars().GetRange()[1])


actor2 = vtk.vtkActor()
actor2.SetMapper(mapper2)

scalarBar = vtk.vtkScalarBarActor()  # 設(shè)置color_bar
scalarBar.SetLookupTable(mapper.GetLookupTable())
scalarBar.SetTitle("SD(mm)")
scalarBar.SetNumberOfLabels(5)  # 設(shè)置要顯示的刻度標(biāo)簽數(shù)。自己設(shè)定色帶的位置
scalarBar.SetMaximumNumberOfColors(10)
# scalarBar.GetPositionCoordinate().SetCoordinateSystemToNormalizedViewport()
# scalarBar.GetPositionCoordinate().SetValue(0.01, 0.49)  # 參數(shù)越小越靠左,第二個(gè)參數(shù)越大越往上
# scalarBar.SetWidth(0.16)
# scalarBar.SetHeight(0.5)
# scalarBar.SetTextPositionToPrecedeScalarBar()  # 標(biāo)題和刻度標(biāo)記是否應(yīng)在標(biāo)量欄之前(文字會(huì)出現(xiàn)在條形左邊)
# # 設(shè)置標(biāo)題和條形之間的邊距
# scalarBar.SetVerticalTitleSeparation(10)
# # 設(shè)置標(biāo)題顏色
scalarBar.DrawTickLabelsOn()
scalarBar.GetTitleTextProperty().SetColor(0, 0, 0)
scalarBar.GetLabelTextProperty().SetColor(0, 0, 0)
arender = vtk.vtkRenderer()
arender.SetViewport(0, 0.0, 1, 1.0)
renWin = vtk.vtkRenderWindow()
renWin.AddRenderer(arender)
iren = vtk.vtkRenderWindowInteractor()
iren.SetRenderWindow(renWin)
style = vtk.vtkInteractorStyleTrackballActor()
iren.SetInteractorStyle(style)
aCamera = vtk.vtkCamera()
aCamera.SetViewUp(0, 0, -1)
aCamera.SetPosition(0, -1, 0)
aCamera.ComputeViewPlaneNormal()
aCamera.Azimuth(30.0)
aCamera.Elevation(30.0)
aCamera.Dolly(1.5)

arender.AddActor(actor)
# arender.AddActor(actor1)
arender.SetActiveCamera(aCamera)
arender.ResetCamera()
arender.SetBackground(1, 1, 1)
arender.ResetCameraClippingRange()
arender.AddActor2D(scalarBar)

renWin.Render()
iren.Initialize()
iren.Start()

結(jié)果示例:

1636355834(1).jpg

到此這篇關(guān)于Python VTK映射三維模型表面距離的文章就介紹到這了,更多相關(guān)Python VTK 映射內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 詳解Flask開發(fā)技巧之異常處理

    詳解Flask開發(fā)技巧之異常處理

    Flask是一個(gè)微型的Python開發(fā)的Web框架,基于Werkzeug WSGI工具箱和Jinja2 模板引擎。Flask使用BSD授權(quán)。Flask也被稱為“microframework”,因?yàn)樗褂煤?jiǎn)單的核心,用extension增加其他功能。本文主要介紹了它的異常處理機(jī)制
    2021-06-06
  • Django連接數(shù)據(jù)庫(kù)并實(shí)現(xiàn)讀寫分離過(guò)程解析

    Django連接數(shù)據(jù)庫(kù)并實(shí)現(xiàn)讀寫分離過(guò)程解析

    這篇文章主要介紹了Django連接數(shù)據(jù)庫(kù)并實(shí)現(xiàn)讀寫分離過(guò)程解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-11-11
  • Python添加時(shí)間軸以實(shí)現(xiàn)動(dòng)態(tài)繪圖詳解

    Python添加時(shí)間軸以實(shí)現(xiàn)動(dòng)態(tài)繪圖詳解

    這篇文章主要為大家詳細(xì)介紹了Python如何添加時(shí)間軸以實(shí)現(xiàn)動(dòng)態(tài)繪圖,文中的示例代碼講解詳細(xì),具有一定的學(xué)習(xí)價(jià)值,感興趣的小伙伴可以參考一下
    2023-09-09
  • 梅爾倒譜系數(shù)(MFCC)實(shí)現(xiàn)

    梅爾倒譜系數(shù)(MFCC)實(shí)現(xiàn)

    這篇文章主要為大家詳細(xì)介紹了梅爾倒譜系數(shù)(MFCC)實(shí)現(xiàn),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-06-06
  • python?OpenCV圖像金字塔

    python?OpenCV圖像金字塔

    這篇文章主要介紹了python?OpenCV圖像金字塔,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下
    2022-06-06
  • python獲取指定路徑下所有指定后綴文件的方法

    python獲取指定路徑下所有指定后綴文件的方法

    這篇文章主要介紹了python獲取指定路徑下所有指定后綴文件的方法,涉及Python針對(duì)文件與目錄操作的相關(guān)技巧,需要的朋友可以參考下
    2015-05-05
  • python通過(guò)偽裝頭部數(shù)據(jù)抵抗反爬蟲的實(shí)例

    python通過(guò)偽裝頭部數(shù)據(jù)抵抗反爬蟲的實(shí)例

    下面小編就為大家分享一篇python通過(guò)偽裝頭部數(shù)據(jù)抵抗反爬蟲的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-05-05
  • Python類屬性的延遲計(jì)算

    Python類屬性的延遲計(jì)算

    這篇文章主要為大家詳細(xì)介紹了Python類屬性的延遲計(jì)算,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-10-10
  • python 通過(guò)麥克風(fēng)錄音 生成wav文件的方法

    python 通過(guò)麥克風(fēng)錄音 生成wav文件的方法

    今天小編就為大家分享一篇python 通過(guò)麥克風(fēng)錄音 生成wav文件的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-01-01
  • 將python安裝信息加入注冊(cè)表的示例

    將python安裝信息加入注冊(cè)表的示例

    今天小編就為大家分享一篇將python安裝信息加入注冊(cè)表的示例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-11-11

最新評(píng)論

原阳县| 璧山县| 黄冈市| 潮州市| 平昌县| 柯坪县| 石景山区| 鄂托克旗| 离岛区| 雷山县| 忻州市| 德清县| 资阳市| 中西区| 罗甸县| 山丹县| 富平县| 且末县| 定日县| 扶余县| 疏附县| 沛县| 商都县| 高清| 西昌市| 东乌珠穆沁旗| 武清区| 太仓市| 宾阳县| 呼伦贝尔市| 永和县| 阿拉善右旗| 开远市| 南漳县| 永福县| 马山县| 海安县| 尚义县| 彭阳县| 衡南县| 浦江县|