TEST(ReadPng, Png_Monochrome) { Image<unsigned char> image; string png_filename = FBLIB_GLOBAL_SRC_DIR + "/data/image_test/two_pixels_monochrome.png"; EXPECT_TRUE(ReadImage(png_filename.c_str(), &image)); EXPECT_EQ(2, image.Width()); EXPECT_EQ(1, image.Height()); EXPECT_EQ(1, image.Channels()); EXPECT_EQ(image(0,0), (unsigned char)255); EXPECT_EQ(image(0,1), (unsigned char)0); }
TEST(ReadJpg, Jpg_Color) { Image<RGBColor> image; string jpg_filename = FBLIB_GLOBAL_SRC_DIR + "/data/image_test/two_pixels_color.jpg"; EXPECT_TRUE(ReadImage(jpg_filename.c_str(), &image)); EXPECT_EQ(2, image.Width()); EXPECT_EQ(1, image.Height()); EXPECT_EQ(3, image.Channels()); EXPECT_EQ(image(0,0), RGBColor(255, 125, 11)); EXPECT_EQ(image(0,1), RGBColor( 20, 127, 255)); }
TEST(ReadPnm, Ppm) { Image<RGBColor> image; string ppm_filename = FBLIB_GLOBAL_SRC_DIR + "/data/image_test/two_pixels.ppm"; EXPECT_TRUE(ReadImage(ppm_filename.c_str(), &image)); EXPECT_EQ(2, image.Width()); EXPECT_EQ(1, image.Height()); EXPECT_EQ(3, image.Channels()); EXPECT_EQ(image(0,0), RGBColor( (unsigned char)255)); EXPECT_EQ(image(0,1), RGBColor( (unsigned char)0)); }
TEST(ReadPnm, PgmComments) { Image<unsigned char> image; string pgm_filename = FBLIB_GLOBAL_SRC_DIR + "/data/image_test/two_pixels_gray.pgm"; EXPECT_TRUE(ReadImage(pgm_filename.c_str(), &image)); EXPECT_EQ(2, image.Width()); EXPECT_EQ(1, image.Height()); EXPECT_EQ(1, image.Channels()); EXPECT_EQ(image(0,0), (unsigned char)255); EXPECT_EQ(image(0,1), (unsigned char)0); }
TEST(ReadPng, Png_Color) { Image<RGBAColor> image; string png_filename = FBLIB_GLOBAL_SRC_DIR + "/data/image_test/two_pixels_color.png"; EXPECT_TRUE(ReadImage(png_filename.c_str(), &image)); // Channels is 4 (RGBA by default) EXPECT_EQ(2, image.Width()); EXPECT_EQ(1, image.Height()); EXPECT_EQ(4, image.Channels()); EXPECT_EQ(image(0,0), RGBAColor(255, 125, 10, 255)); EXPECT_EQ(image(0,1), RGBAColor( 20, 127, 255,255)); }
bool WriteRGBLDR(const Image<unsigned char, 3>& out, const std::string& image_file_out) { try { IplImage * image = cvCreateImage(cvSize(out.Width(), out.Height()), 32, out.Channels()); CvScalar s; for (int x = 0; x < out.Width(); ++x) { for (int y = 0; y < out.Height(); ++y) { s.val[0] = out.GetPixelComponent(x, y, 2); s.val[1] = out.GetPixelComponent(x, y, 1); s.val[2] = out.GetPixelComponent(x, y, 0); cvSet2D(image, y, x, s); } } return cvSaveImage(image_file_out.c_str(), image); } catch (std::exception& ex) { return false; } }