ITK分割,VTK+VC怎么显示

mexiao 2009-03-18 07:09:44
请问,有谁知道ITK分割后的图像通过VTK和VC显示出来?帮帮忙谢谢!我写了一个代码,编译能通过,但是老是在Viewer->Render()出错。
CVTK::CVTK()
{
lowerThreshold = 150.0;
upperThreshold = 180.0;
index[0] =60;
index[1] =116;
ReaderType1::Pointer reader = ReaderType1::New();
reader->SetFileName("G:\\ITKVTK\\test\\test\\myProject\\Debug\\BrainProtonDensitySlice.png");
WriterType1::Pointer writer = WriterType1::New();
writer->SetFileName("G:\\ITKVTK\\test\\test\\myProject\\Debug\\aa.png");
CurvatureFlowImageFilterType::Pointer smoothing = CurvatureFlowImageFilterType::New();
ConnectedFilterType::Pointer connectedThreshold = ConnectedFilterType::New();
CastingFilterType::Pointer caster = CastingFilterType::New();
smoothing->SetInput( reader->GetOutput() );
connectedThreshold->SetInput( smoothing->GetOutput() );
caster->SetInput( connectedThreshold->GetOutput() );
writer->SetInput( caster->GetOutput() );

smoothing->SetNumberOfIterations( 5 );
smoothing->SetTimeStep( 0.125 );
connectedThreshold->SetLower( lowerThreshold );
connectedThreshold->SetUpper( upperThreshold );
connectedThreshold->SetReplaceValue( 255 );
connectedThreshold->SetSeed( index );
ConnectorType::Pointer connector = ConnectorType::New();
connector->SetInput( caster->GetOutput());

// writer->Update();

viewer = vtkImageViewer::New();
viewer->SetInput(connector->GetOutput());
viewer->SetColorWindow(256);
viewer->SetColorLevel(128);

iren = vtkWin32RenderWindowInteractor::New();
viewer->SetupInteractor(iren);
// connector->Update();
picker=vtkCellPicker::New();
//picker->SetTolerance(0.00001);

vtkCallbackCommand * cmd = vtkCallbackCommand::New();
cmd->SetCallback(CVTK::MyExecute);
cmd->SetClientData( this );
picker->AddObserver(vtkCommand::EndPickEvent, cmd);
iren->SetPicker(picker);
cmd->Delete();

}

void CVTK::BeginRenderOn(CStatic * aStatic)
{
CRect rect;
aStatic->GetClientRect(&rect);
viewer->SetSize(rect.Width(),rect.Height());
viewer->SetParentId(aStatic->m_hWnd); //关键代码一:设置父窗口
viewer->Render(); // 关键代码二:开始绘制,启动交互器
// iren->Initialize();
}
void CVTK::MyExecute(vtkObject *caller, unsigned long eid, void *clientdata, void *calldata)
{
CVTK *m_viewer = reinterpret_cast<CVTK*>(clientdata );
if (m_viewer->picker->GetCellId()<0)
{
AfxMessageBox("CellID < 0");
}
else
{
AfxMessageBox("CellID > 0");
double ScreenCoordinate[3],globalCoordinate[3]; //拾取点的屏幕坐标和全局坐标
m_viewer->picker->GetSelectionPoint(ScreenCoordinate); //得到屏幕坐标
m_viewer->picker->GetPickPosition(globalCoordinate); //得到全局坐标
};
}
...全文
351 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
cochicken 2010-07-14
  • 打赏
  • 举报
回复
我刚装完ITK和VTK,试个小例子,遇到同样的问题,还有viewer->SetColorLevel等,同样求指导。
majinguang2004 2010-07-12
  • 打赏
  • 举报
回复
reader->update()
fanyunzhou2841585 2009-05-21
  • 打赏
  • 举报
回复
viewer应该没有问题,那就是connector的问题 是哪个type定义的?
fanyunzhou2841585 2009-05-21
  • 打赏
  • 举报
回复
viewer应该没有问题,那就是connector的问题 是哪个type定义的?

19,468

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 图形处理/算法
社区管理员
  • 图形处理/算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧