我試圖不使用圖像瀏覽器來讀取DICOM圖像和我碰到VtkGdmReader ..當我試圖去執行它,它給我的錯誤:閱讀DICOM圖像
碼=>vtkGdmReader例如
錯誤C2039:「setInput設置」:是不是「vtkTexture」
錯誤C2039成員:「setInput設置」:是不是成員「vtkPolyDataMapper」
請任何一個可以告訴我爲什麼我面臨這個問題,這是與vtk版本有關的錯誤?如果是的話,我該怎麼辦?
請幫我解決這個問題..
我試圖不使用圖像瀏覽器來讀取DICOM圖像和我碰到VtkGdmReader ..當我試圖去執行它,它給我的錯誤:閱讀DICOM圖像
碼=>vtkGdmReader例如
錯誤C2039:「setInput設置」:是不是「vtkTexture」
錯誤C2039成員:「setInput設置」:是不是成員「vtkPolyDataMapper」
請任何一個可以告訴我爲什麼我面臨這個問題,這是與vtk版本有關的錯誤?如果是的話,我該怎麼辦?
請幫我解決這個問題..
至於說在評論中,這個錯誤是關係到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)以獲取有關此錯誤和您可能遇到的其他錯誤的更多信息。
我相信SetInput在VTK-6中被刪除。 http://www.vtk.org/Wiki/VTK/VTK_6_Migration/Replacement_of_SetInput – drescherjm
@ user2268891:我認爲drescherjm是對的。我正在使用VTK 5.10.1,而且我可以使用vtkPolyDataMapper-> SetInput()而沒有問題(我的Intellisense也可以自行識別它)。可能,您應該恢復到VTK 5.x.x以使該示例按原樣運行。 –