[arrayfire] 210/284: Add tests for 16-bit images for ImageIO+Native
Ghislain Vaillant
ghisvail-guest at moszumanska.debian.org
Sun Feb 7 18:59:34 UTC 2016
This is an automated email from the git hooks/post-receive script.
ghisvail-guest pushed a commit to branch debian/experimental
in repository arrayfire.
commit 88cf4713e3040450e0200faa1d65ac9079296243
Author: Shehzan Mohammed <shehzan at arrayfire.com>
Date: Mon Jan 11 14:31:57 2016 -0500
Add tests for 16-bit images for ImageIO+Native
---
test/imageio.cpp | 140 +++++++++++++++++++++++++++++++++++++++++++++++++++++--
1 file changed, 137 insertions(+), 3 deletions(-)
diff --git a/test/imageio.cpp b/test/imageio.cpp
index d19aac3..4029de5 100644
--- a/test/imageio.cpp
+++ b/test/imageio.cpp
@@ -36,8 +36,6 @@ typedef ::testing::Types<float> TestTypes;
// register the type list
TYPED_TEST_CASE(ImageIO, TestTypes);
-// Disable tests if FreeImage is not found
-#if defined(WITH_FREEIMAGE)
void loadImageTest(string pTestFile, string pImageFile, const bool isColor)
{
if (noDoubleTests<float>()) return;
@@ -251,4 +249,140 @@ TEST(ImageMem, SaveMemBMP)
af::deleteImageMem(savedMem);
}
-#endif // WITH_FREEIMAGE
+TEST(ImageIO, LoadImage16CPP)
+{
+ if (noImageIOTests()) return;
+
+ vector<af::dim4> numDims;
+
+ vector<vector<float> > in;
+ vector<vector<float> > tests;
+ readTests<float, float, float>(string(TEST_DIR"/imageio/color_seq_16.test"),numDims,in,tests);
+
+ af::dim4 dims = numDims[0];
+
+ af::array img = af::loadImage(string(TEST_DIR"/imageio/color_seq_16.png").c_str(), true);
+ ASSERT_EQ(img.type(), f32); // loadImage should always return float
+
+ // Get result
+ float *imgData = new float[dims.elements()];
+ img.host((void*)imgData);
+
+ // Compare result
+ size_t nElems = in[0].size();
+ for (size_t elIter = 0; elIter < nElems; ++elIter) {
+ ASSERT_EQ(in[0][elIter], imgData[elIter]) << "at: " << elIter << std::endl;
+ }
+
+ // Delete
+ delete[] imgData;
+}
+
+TEST(ImageIO, SaveImage16CPP)
+{
+ if (noImageIOTests()) return;
+
+ af::dim4 dims(16, 24, 3);
+
+ af::array input = af::randu(dims, u16);
+ af::array input_255 = (input / 257).as(u16);
+
+ af::saveImage("saveImage16CPP.png", input);
+
+ af::array img = af::loadImage("saveImage16CPP.png", true);
+ ASSERT_EQ(img.type(), f32); // loadImage should always return float
+
+ ASSERT_FALSE(af::anyTrue<bool>(abs(img - input_255)));
+}
+
+////////////////////////////////////////////////////////////////////////////////
+// Image IO Native Tests
+////////////////////////////////////////////////////////////////////////////////
+
+template<typename T>
+void loadImageNativeCPPTest(string pTestFile, string pImageFile)
+{
+ if (noImageIOTests()) return;
+
+ vector<af::dim4> numDims;
+
+ vector<vector<float> > in;
+ vector<vector<float> > tests;
+ readTests<float, float, float>(pTestFile,numDims,in,tests);
+
+ af::dim4 dims = numDims[0];
+ af::array img = af::loadImageNative(pImageFile.c_str());
+ ASSERT_EQ(img.type(), (af_dtype)af::dtype_traits<T>::af_type);
+
+ // Get result
+ T *imgData = new T[dims.elements()];
+ img.host((void*)imgData);
+
+ // Compare result
+ size_t nElems = in[0].size();
+ for (size_t elIter = 0; elIter < nElems; ++elIter) {
+ ASSERT_EQ(in[0][elIter], imgData[elIter]) << "at: " << elIter << std::endl;
+ }
+
+ // Delete
+ delete[] imgData;
+}
+
+TEST(ImageIONative, LoadImageNative8CPP)
+{
+ loadImageNativeCPPTest<uchar>(string(TEST_DIR"/imageio/color_small.test"),
+ string(TEST_DIR"/imageio/color_small.png"));
+}
+
+TEST(ImageIONative, LoadImageNative16SmallCPP)
+{
+ loadImageNativeCPPTest<ushort>(string(TEST_DIR"/imageio/color_small_16.test"),
+ string(TEST_DIR"/imageio/color_small_16.png"));
+}
+
+TEST(ImageIONative, LoadImageNative16ColorCPP)
+{
+ loadImageNativeCPPTest<ushort>(string(TEST_DIR"/imageio/color_seq_16.test"),
+ string(TEST_DIR"/imageio/color_seq_16.png"));
+}
+
+TEST(ImageIONative, LoadImageNative16GrayCPP)
+{
+ loadImageNativeCPPTest<ushort>(string(TEST_DIR"/imageio/gray_seq_16.test"),
+ string(TEST_DIR"/imageio/gray_seq_16.png"));
+}
+
+template<typename T>
+void saveLoadImageNativeCPPTest(af::dim4 dims)
+{
+ if (noImageIOTests()) return;
+
+ af::array input = af::randu(dims, (af_dtype)af::dtype_traits<T>::af_type);
+
+ af::saveImageNative("saveImageNative.png", input);
+
+ af::array loaded = af::loadImageNative("saveImageNative.png");
+ ASSERT_EQ(loaded.type(), input.type());
+
+ ASSERT_FALSE(af::anyTrue<bool>(input - loaded));
+}
+
+TEST(ImageIONative, SaveLoadImageNative8CPP)
+{
+ saveLoadImageNativeCPPTest<uchar>(af::dim4(480, 720, 3, 1));
+}
+
+TEST(ImageIONative, SaveLoadImageNative16SmallCPP)
+{
+ saveLoadImageNativeCPPTest<ushort>(af::dim4(8, 12, 3, 1));
+}
+
+TEST(ImageIONative, SaveLoadImageNative16ColorCPP)
+{
+ saveLoadImageNativeCPPTest<ushort>(af::dim4(480, 720, 3, 1));
+}
+
+TEST(ImageIONative, SaveLoadImageNative16GrayCPP)
+{
+ saveLoadImageNativeCPPTest<ushort>(af::dim4(24, 32, 1, 1));
+}
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/debian-science/packages/arrayfire.git
More information about the debian-science-commits
mailing list