[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