#include "mitkImageToOpenCVImageFilter.h"
#include "mitkOpenCVToMitkImageFilter.h"
#include <mitkTestingMacros.h>
#include <mitkITKImageImport.h>
#include <iostream>
Go to the source code of this file.
Functions | |
int | mitkImageToOpenCVImageFilterTest (int, char *[]) |
int mitkImageToOpenCVImageFilterTest | ( | int | , |
char * | [] | ||
) |
Documentation test for the class "ImageToOpenCVImageFilter".
Definition at line 30 of file mitkImageToOpenCVImageFilterTest.cpp.
References mitk::ImportItkImage(), int(), MITK_TEST_BEGIN, MITK_TEST_CONDITION_REQUIRED, MITK_TEST_END, and mitk::ImageToOpenCVImageFilter::New().
{ MITK_TEST_BEGIN("ImageToOpenCVImageFilter") // create itk rgb image typedef unsigned char PixelType; typedef itk::Image< itk::RGBPixel<PixelType>, 2 > ImageType; ImageType::Pointer itkImage = ImageType::New(); ImageType::IndexType start; start[0] = 0; // first index on X start[1] = 0; // first index on Y ImageType::SizeType size; size[0] = 50; // size along X size[1] = 40; // size along Y ImageType::RegionType region; region.SetSize( size ); region.SetIndex( start ); itkImage->SetRegions( region ); itkImage->Allocate(); typedef itk::ImageRegionIterator<ImageType> IteratorType; IteratorType it(itkImage, region); float twoThirdsTheWidth = size[0] / 4; unsigned int x=0, y=0; // create rgb pic for ( it.GoToBegin(); !it.IsAtEnd(); ++it ) { ImageType::PixelType newPixel; newPixel.SetRed(0); newPixel.SetGreen(0); // create asymmetric pic if( x > twoThirdsTheWidth ) newPixel.SetBlue(0); else newPixel.SetBlue(255); it.Set(newPixel); ++x; // next line found if( x == size[0] ) x = 0; } // debugging // itk::ImageFileWriter< ImageType >::Pointer writer = itk::ImageFileWriter< ImageType >::New(); // writer->SetFileName( "c:\\image.png" ); // writer->SetInput ( itkImage ); // writer->Update(); // import rgb image as MITK image mitk::Image::Pointer mitkImage = mitk::ImportItkImage( itkImage ); mitk::ImageToOpenCVImageFilter::Pointer _ImageToOpenCVImageFilter = mitk::ImageToOpenCVImageFilter::New(); _ImageToOpenCVImageFilter->SetImage( mitkImage.GetPointer() ); IplImage* openCVImage = _ImageToOpenCVImageFilter->GetOpenCVImage(); // check byte size const unsigned int expectedSize = size[0] * size[1] * 3 * sizeof( PixelType ); const unsigned int realSize = openCVImage->width * openCVImage->height * openCVImage->nChannels * sizeof ( PixelType ); MITK_TEST_CONDITION_REQUIRED( expectedSize == realSize, "Test expectedSize == realSize"); // check pixel values PixelType expectedBlueValue; CvScalar s; for (y = 0; (int)y < openCVImage->height; ++y) { for (x = 0; (int)x < openCVImage->width; ++x) { expectedBlueValue = 255; if(x > twoThirdsTheWidth) expectedBlueValue = 0; s = cvGet2D(openCVImage,y,x); if( s.val[0] != expectedBlueValue || s.val[1] != 0 || s.val[2] != 0 ) { std::cout << "Wrong RGB values in created OpenCV image" << std::endl; throw mitk::TestFailedException(); } } } // cvNamedWindow( "test" ); // cvShowImage( "test" , openCVImage ); // cvWaitKey(); // always end with this! MITK_TEST_END(); }