#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();
}
1.7.2