在使用VTK的过程中,我们经常需要用vtkWindowToImageFilter对象来输出渲染结果到图片。如果我们需要用OpenCV对图像进行进一步的处理和运用,需要先将其转换为cv::Mat形式。本文将介绍如何将vtkImageData转换为cv::Mat。
核心的代码如下:
int dim[3];
windowToImageFilter->GetOutput()->GetDimensions(dim);
// convert vtkImageData to cv::Mat
cv::Mat renderedImg(dim[1],
dim[0],
CV_8UC3,
windowToImageFilter->GetOutput()->GetScalarPointer());
cv::cvtColor(renderedImg, renderedImg, CV_BGR2GRAY);
cv::flip(renderedImg, renderedImg, 0);
首先我们要获得vtk图片尺寸&