code is here:
vtkDICOMImageReader*reader = vtkDICOMImageReader::New();
reader->SetFileName("D:\\DicomData\\SE6\\IM24");
reader->Update();
vtkImageData *imageData_1 = vtkImageData::New();
imageData_1->DeepCopy(reader->GetOutput());
vtkImageCast*caster = vtkImageCast::New();
caster->SetInput(imageData_1);
caster->SetOutputScalarTypeToUnsignedChar();
caster->Update();
vtkExtractVOI*extractVOI = vtkExtractVOI::New();
extractVOI->SetInput(caster->GetOutput());
int dims[3];
imageData_1->GetDimensions(dims);
extractVOI->SetVOI(0, dims[0], 0, dims[1], 0, 0); // Set it to z=75
extractVOI->GetOutput()->SetScalarTypeToDouble();
cv::Mat image(dims[0], dims[1], CV_8UC1);
extractVOI->Update();
for (int i=0; i<dims[0]; ++i)
{
for (int j=0; j<dims[1]; ++j)
{
image.at<unsigned char>(cv::Point(j,i)) = *static_cast<unsigned char*>(extractVOI->GetOutput()->GetScalarPointer(i,j,0));
}
}
在 2015年4月29日星期三 UTC+8下午2:44:30,Xianjie Li写道: