/* * * NICE-Core - efficient algebra and computer vision methods * - libimage - An image/template for new NICE libraries * See file License for license information. */ #ifdef NICE_USELIB_CPPUNIT #include "TestImageFile.h" #include #include #include #include #include #ifdef NICE_USELIB_LIMUN_IOCOMPRESSION #include #endif using namespace NICE; using namespace std; CPPUNIT_TEST_SUITE_REGISTRATION( TestImageFile ); void TestImageFile::setUp() { } void TestImageFile::tearDown() { } void TestImageFile::testConstructor() { } void TestImageFile::testFloatPXM() { /* int width=32; int height=8; ColorImage c(width,height); for(int j=0;j newc; newc.read(ImageFile("test-float.ppm")); FloatImage newf(width,height); newf.read(ImageFile("test-float.ppm")); Image newg(width,height); convertBitDepth(newf,&newg); newg.write(ImageFile("test-floatcmp.ppm")); #ifdef NICE_USELIB_LIMUN_IOCOMPRESSION { std::stringstream inout; inout << g; std::stringstream inout1; inout1 << newg; CPPUNIT_ASSERT_EQUAL(inout.str(),inout1.str()); } { std::stringstream inout; inout << c; std::stringstream inout1; inout1 << newc; CPPUNIT_ASSERT_EQUAL(inout.str(),inout1.str()); } #endif system("rm test-float.ppm"); */ } void TestImageFile::testFloatImage() { /* int width=32; int height=8; ColorImage c(width,height); for(int j=0;j newc; newc.read(ImageFile("test-float.png")); ColorImage newc2(width,height); convertBitDepth(newc,&newc2); FloatImage newf(width,height); newf.read(ImageFile("test-float.png")); Image newg(width,height); convertBitDepth(newf,&newg); #ifdef NICE_USELIB_LIMUN_IOCOMPRESSION { std::stringstream inout; inout << g; std::stringstream inout1; inout1 << newg; CPPUNIT_ASSERT_EQUAL(inout.str(),inout1.str()); } { std::stringstream inout; inout << c; std::stringstream inout1; inout1 << newc2; CPPUNIT_ASSERT_EQUAL(inout.str(),inout1.str()); } #endif system("rm test-float.png"); */ } void TestImageFile::testColorImage() { int width=31; int height=8; ColorImage c(width,height); for(int i=0;i(c.getPixel(w,h,channel)); int g_newc = static_cast(newc.getPixel(w,h,channel)); int g_newc2 = static_cast(newc2.getPixel(w,h,channel)); CPPUNIT_ASSERT_EQUAL( g_c, g_newc ); CPPUNIT_ASSERT_EQUAL( g_c, g_newc2 ); } } } system("rm test-color.png test-color.ppm"); } void TestImageFile::testGrayImage() { int width=9; int height=32; Image orig(width,height); for(int i=0;i gray(4); gray[0].read(ImageFile("test.png")); gray[0].write(ImageFile("test.pgm")); gray[1].read(ImageFile("test.pgm")); gray[1].write(ImageFile("test.ppm")); gray[2].read(ImageFile("test.ppm")); ColorImage c(width,height); c.read(ImageFile("test.pgm")); c.write(ImageFile("testc.pgm")); gray[3].read(ImageFile("testc.pgm")); for(int i=0;i<4;i++) { for(int w=0;w(gray[i].getPixel(w,h)); int g_orig = static_cast(orig.getPixel(w,h)); CPPUNIT_ASSERT_EQUAL( g_orig, g_w ); } } } system("rm test.png test.pgm test.ppm testc.pgm"); } void TestImageFile::testJPG_IO() { // Image { Image src(4,1); src(0,0) = 0; src(1,0) = 100; src(2,0) = 160; src(3,0) = 255; src.write(ImageFile("gray-out.jpg")); ImageFile imgf ("gray-out.jpg"); CPPUNIT_ASSERT_EQUAL( src.width(), (int)imgf.width() ); CPPUNIT_ASSERT_EQUAL( src.height(), (int)imgf.height() ); Image in; in.read(ImageFile("gray-out.jpg")); for(int i=0; i(src(i,0)),static_cast(in(i,0))); system("rm gray-out.jpg"); } // ImageT { ImageT src(5,1); src(0,0) = -10.5; src(1,0) = 0.0; src(2,0) = 199.75; src(3,0) = 255.0; src(4,0) = 300.5; src.write(ImageFile("gray-float-out.jpg")); ImageT in; in.read(ImageFile("gray-float-out.jpg")); CPPUNIT_ASSERT_DOUBLES_EQUAL( 0.0,static_cast(in(0,0)), 0.0001); CPPUNIT_ASSERT_DOUBLES_EQUAL( 0.0,static_cast(in(1,0)), 0.0001); CPPUNIT_ASSERT_DOUBLES_EQUAL(199.0,static_cast(in(2,0)), 0.0001); CPPUNIT_ASSERT_DOUBLES_EQUAL(255.0,static_cast(in(3,0)), 0.0001); CPPUNIT_ASSERT_DOUBLES_EQUAL(255.0,static_cast(in(4,0)), 0.0001); system("rm gray-float-out.jpg"); } // ColorImage { ColorImage src(4,1); src.setPixelQuick(0,0, 0, 0, 0); src.setPixelQuick(1,0, 100,100,100); src.setPixelQuick(2,0, 160,160,160); src.setPixelQuick(3,0, 255,255,255); src.write(ImageFile("color-out.jpg")); ImageFile imgf ("color-out.jpg"); CPPUNIT_ASSERT_EQUAL( src.width(), (int)imgf.width() ); CPPUNIT_ASSERT_EQUAL( src.height(), (int)imgf.height() ); CPPUNIT_ASSERT_EQUAL( imgf.getHeader().channel, 3 ); ColorImage in; in.read(ImageFile("color-out.jpg")); for(int i=0; i(src(i,0,c)),static_cast(in(i,0,c))); system("rm color-out.jpg"); } // ColorImageT { ColorImageT src(5,1); src.setPixelQuick(0,0, -10.5, -10.5, -10.5); src.setPixelQuick(1,0, 0.0, 0.0, 0.0); src.setPixelQuick(2,0, 199.75, 199.75, 199.75); src.setPixelQuick(3,0, 255.0, 255.0, 255.0); src.setPixelQuick(4,0, 300.5, 300.5, 300.5); src.write(ImageFile("color-float-out.jpg")); ColorImageT in; in.read(ImageFile("color-float-out.jpg")); for(int i=0; i<3; ++i) { CPPUNIT_ASSERT_DOUBLES_EQUAL( 0.0,static_cast(in(0,0,i)), 0.0001); CPPUNIT_ASSERT_DOUBLES_EQUAL( 0.0,static_cast(in(1,0,i)), 0.0001); CPPUNIT_ASSERT_DOUBLES_EQUAL(199.0,static_cast(in(2,0,i)), 0.0001); CPPUNIT_ASSERT_DOUBLES_EQUAL(255.0,static_cast(in(3,0,i)), 0.0001); CPPUNIT_ASSERT_DOUBLES_EQUAL(255.0,static_cast(in(4,0,i)), 0.0001); } system("rm color-float-out.jpg"); } } void TestImageFile::testInvalidFileName() { ImageFile image_file; ImageFile::Format fileformat = image_file.name2Format("nodothere"); CPPUNIT_ASSERT_EQUAL(fileformat,ImageFile::FormatUnknown); } #endif