前言
因为某些原因必须使用VTK 6.1.0, 不知道是不是里面的BUG,在学习图像融合这块的时候,程序崩溃了。
正文
(请忽略我的命名什么的不规范)
① 读入一个图片
<span style="font-size:12px;">vtkSmartPointer<vtkJPEGReader> jimg = vtkSmartPointer<vtkJPEGReader>::New();
jimg->SetFileName("E:\\workspace\\001.jpg");
jimg->Update();</span>
<span style="font-size:12px;">vtkSmartPointer<vtkImageCanvasSource2D> source = vtkSmartPointer<vtkImageCanvasSource2D>::New();
source->SetNumberOfScalarComponents(1);
source->SetScalarTypeToUnsignedChar();
source->SetExtent(0, 1920, 0, 1200, 0, 0);
source->SetDrawColor(.0);
source->FillBox(0, 1920, 0, 1200);
source->SetDrawColor(255.0);
source->FillBox(100, 400, 100, 400);
source->Update();</span>
③ 融合Blend
vtkSmartPointer<vtkImageBlend> blend = vtkSmartPointer<vtkImageBlend>::New();
blend->SetInputData(0, jimg->GetOutput());
blend->SetInputData(1, source->GetOutput());
在blendg过程中出错了,
错误信息显示太快根本看不清楚,应该是blend过程中出错了,所以,我不是显示blend之后的图像,显示图像,得到一个错误提示:
ERROR: In ..\..\..\VTK-6.1.0\Common\ExecutionModel\vtkDemandDrivenPipeline.cxx, line 815
vtkCompositeDataPipeline (0000000001E52270): Input for connection index 0 on input port index 1 for algorithm vtkImageBlend(0000000001E4B410) is of type vtkImageData, but a vtkImageStencilData is required.
简单来看就是输入的文件类型是错的,还好我只是手头练习的小程序,这个错误没有致命!