opencv无法读取dicom图像,就想到把vtkImageData转成cv::Mat进行处理。
废话不多说,上代码
``
//convert vtkimagedata to cv::mat
vtkSmartPointer<vtkImageData> imageData_1 = reader->GetOutput();
vtkSmartPointer<vtkExtractVOI> extractVOI =vtkSmartPointer<vtkExtractVOI>::New() ;
extractVOI->SetInput(imageData_1);
**int** dims[3];
imageData_1->GetDimensions(dims);
cout << dims[0]<< endl;
cout << dims[1]<< endl;
cout << dims[2]<< endl;
extractVOI->SetVOI(0, dims[0], 0, dims[1], 0, 0); // Set it to z=75
extractVOI->GetOutput()->SetScalarTypeToSignedChar();
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));
}
}
参考:http://stackoverflow.com/questions/19891341/copy-vtkimagedata-to-cvmat
[来自为知笔记(Wiz)](http://www.wiz.cn/i/c09d0bb5 "来自为知笔记(Wiz)")