2013-08-29 191 views
0

我試圖不使用圖像瀏覽器來讀取DICOM圖像和我碰到VtkGdmReader ..當我試圖去執行它,它給我的錯誤:閱讀DICOM圖像

碼=>vtkGdmReader例如

錯誤C2039:「setInput設置」:是不是「vtkTexture」

錯誤C2039成員:「setInput設置」:是不是成員「vtkPolyDataMapper」

請任何一個可以告訴我爲什麼我面臨這個問題,這是與vtk版本有關的錯誤?如果是的話,我該怎麼辦?

請幫我解決這個問題..

+1

我相信SetInput在VTK-6中被刪除。 http://www.vtk.org/Wiki/VTK/VTK_6_Migration/Replacement_of_SetInput – drescherjm

+0

@ user2268891:我認爲drescherjm是對的。我正在使用VTK 5.10.1,而且我可以使用vtkPolyDataMapper-> SetInput()而沒有問題(我的Intellisense也可以自行識別它)。可能,您應該恢復到VTK 5.x.x以使該示例按原樣運行。 –

回答

0

至於說在評論中,這個錯誤是關係到VTK版本。 SetInput() was removed in VTK 6

您可以在VTK 5中工作或更新代碼。如果您決定對其進行更新,則可以通過將SetInput()替換爲SetInputData()SetInputConnection()並進行一些修改來解決此錯誤。如果您希望過濾器通過管道,則應使用SetInputConnection()

作爲固定你提到,應更換在你提供的代碼的以下各行中的錯誤的一個示例:
VTKtexture->SetInput(ima);
VTKplaneMapper->SetInput(VTKplane->GetOutput());
到:
VTKtexture->SetInputConnection(reader->GetOutputPort());
VTKplaneMapper->SetInputConnection(VTKplane->GetOutputPort());

在第二次修改(VTKplaneMapper),請注意,我們只是將GetOutput()更改爲GetOutputPort(),而在第一次修改中(VTKtexture) letely改變了傳遞給SetInputConnection()的論點。發生這種情況是因爲數據對象(如ima)不再依賴於管道對象(如算法和執行程序)。在這種情況下,我們給出生成該數據對象的算法作爲參數 - 如果您查找它,您可以看到行vtkImageData* ima = reader->GetOutput();,您只需要像第二個修改中那樣用替換GetOutputPort()即可。

我建議您查看VTK Wiki的VTK 6 Migration pages(和guide)以獲取有關此錯誤和您可能遇到的其他錯誤的更多信息。