15 #include <itkImportImageFilter.h> 16 #include <itkRGBPixel.h> 18 #include <itkOpenCVImageBridge.h> 19 #include <itkImageFileWriter.h> 45 const cv::Mat cvMat = cv::cvarrToMat(image,
false);
60 if ((input.depth() >= 0) && ((
unsigned int)input.depth() == CV_8S) && (input.channels() == 1))
62 m_Image = ConvertCVMatToMitkImage< char, 2>(input);
64 else if (input.depth() == CV_8U && input.channels() == 1)
66 m_Image = ConvertCVMatToMitkImage< unsigned char, 2>(input);
68 else if (input.depth() == CV_8U && input.channels() == 3)
70 m_Image = ConvertCVMatToMitkImage< UCRGBPixelType, 2>(input);
72 else if (input.depth() == CV_16U && input.channels() == 1)
74 m_Image = ConvertCVMatToMitkImage< unsigned short, 2>(input);
76 else if (input.depth() == CV_16U && input.channels() == 3)
78 m_Image = ConvertCVMatToMitkImage< USRGBPixelType, 2>(input);
80 else if (input.depth() == CV_32F && input.channels() == 1)
82 m_Image = ConvertCVMatToMitkImage< float, 2>(input);
84 else if (input.depth() == CV_32F && input.channels() == 3)
86 m_Image = ConvertCVMatToMitkImage< FloatRGBPixelType, 2>(input);
88 else if (input.depth() == CV_64F && input.channels() == 1)
90 m_Image = ConvertCVMatToMitkImage< double, 2>(input);
92 else if (input.depth() == CV_64F && input.channels() == 3)
94 m_Image = ConvertCVMatToMitkImage< DoubleRGBPixelType, 2>(input);
98 MITK_WARN <<
"Unknown image depth and/or pixel type. Cannot convert OpenCV to MITK image.";
106 MITK_WARN <<
"Cannot start filter. OpenCV Image not set.";
119 template <
typename TPixel,
unsigned int VImageDimension>
122 typedef itk::Image< TPixel, VImageDimension >
ImageType;
124 typename ImageType::Pointer output = itk::OpenCVImageBridge::CVMatToITKImage<ImageType>(input);
140 mitkImage->GetGeometry(timeStep)->SetSpacing(this->
GetOutput()->GetGeometry()->GetSpacing());
141 mitkImage->GetGeometry(timeStep)->SetOrigin(this->
GetOutput()->GetGeometry()->GetOrigin());
142 mitkImage->GetGeometry(timeStep)->SetIndexToWorldTransform(this->
GetOutput()->GetGeometry()->GetIndexToWorldTransform());
145 mitkImage->SetImportVolume(readAccess.
GetData(), timeStep);
147 mitkImage->Modified();
~OpenCVToMitkImageFilter() override
void InsertOpenCVImageAsMitkTimeSlice(const cv::Mat openCVImage, Image::Pointer mitkImage, int timeStep)
Convenient method to insert an openCV image as a slice at a certain time step into a 3D or 4D mitk::I...
itk::Image< unsigned char, 3 > ImageType
static void Update(vtkPolyData *)
void GenerateData() override
DataCollection - Class to facilitate loading/accessing structured data.
Image::Pointer GrabItkImageMemory(itk::SmartPointer< ItkOutputImageType > &itkimage, mitk::Image *mitkImage=nullptr, const BaseGeometry *geometry=nullptr, bool update=true)
Grabs the memory of an itk::Image (with a specific type) and puts it into an mitk::Image.The memory is managed by the mitk::Image after calling this function. The itk::Image remains valid until the mitk::Image decides to free the memory.
OpenCVToMitkImageFilter()
itk::FastMutexLock::Pointer m_ImageMutex
OutputImageType * GetOutput(void)
void SetOpenCVImage(const IplImage *image)
Image class for storing images.
mitk::Image::Pointer image
itk::FastMutexLock::Pointer m_OpenCVMatMutex
static Image::Pointer ConvertCVMatToMitkImage(const cv::Mat input)
void SetOpenCVMat(const cv::Mat &image)
ImageReadAccessor class to get locked read access for a particular image part.
const void * GetData() const
Gives const access to the data.