| 94 | |
| 95 | template<typename T> |
| 96 | void cannyImageOtsuTest(string pTestFile, bool isColor) { |
| 97 | SUPPORTED_TYPE_CHECK(T); |
| 98 | IMAGEIO_ENABLED_CHECK(); |
| 99 | |
| 100 | using af::dim4; |
| 101 | |
| 102 | vector<dim4> inDims; |
| 103 | vector<string> inFiles; |
| 104 | vector<dim_t> outSizes; |
| 105 | vector<string> outFiles; |
| 106 | |
| 107 | readImageTests(pTestFile, inDims, inFiles, outSizes, outFiles); |
| 108 | |
| 109 | size_t testCount = inDims.size(); |
| 110 | |
| 111 | for (size_t testId = 0; testId < testCount; ++testId) { |
| 112 | af_array _inArray = 0; |
| 113 | af_array inArray = 0; |
| 114 | af_array _outArray = 0; |
| 115 | af_array cstArray = 0; |
| 116 | af_array mulArray = 0; |
| 117 | af_array outArray = 0; |
| 118 | af_array goldArray = 0; |
| 119 | |
| 120 | inFiles[testId].insert(0, string(TEST_DIR "/CannyEdgeDetector/")); |
| 121 | outFiles[testId].insert(0, string(TEST_DIR "/CannyEdgeDetector/")); |
| 122 | |
| 123 | af_dtype type = (af_dtype)dtype_traits<T>::af_type; |
| 124 | |
| 125 | ASSERT_SUCCESS( |
| 126 | af_load_image(&_inArray, inFiles[testId].c_str(), isColor)); |
| 127 | |
| 128 | ASSERT_SUCCESS(af_cast(&inArray, _inArray, type)); |
| 129 | |
| 130 | ASSERT_SUCCESS( |
| 131 | af_load_image_native(&goldArray, outFiles[testId].c_str())); |
| 132 | |
| 133 | ASSERT_SUCCESS(af_canny(&_outArray, inArray, |
| 134 | AF_CANNY_THRESHOLD_AUTO_OTSU, |
| 135 | 0.08, 0.32, 3, false)); |
| 136 | |
| 137 | unsigned ndims = 0; |
| 138 | dim_t dims[4]; |
| 139 | |
| 140 | ASSERT_SUCCESS(af_get_numdims(&ndims, _outArray)); |
| 141 | ASSERT_SUCCESS( |
| 142 | af_get_dims(dims, dims + 1, dims + 2, dims + 3, _outArray)); |
| 143 | |
| 144 | ASSERT_SUCCESS(af_constant(&cstArray, 255.0, ndims, dims, f32)); |
| 145 | |
| 146 | ASSERT_SUCCESS(af_mul(&mulArray, cstArray, _outArray, false)); |
| 147 | ASSERT_SUCCESS(af_cast(&outArray, mulArray, u8)); |
| 148 | |
| 149 | ASSERT_IMAGES_NEAR(goldArray, outArray, 1.0e-3); |
| 150 | |
| 151 | ASSERT_SUCCESS(af_release_array(_inArray)); |
| 152 | ASSERT_SUCCESS(af_release_array(inArray)); |
| 153 | ASSERT_SUCCESS(af_release_array(cstArray)); |
nothing calls this directly
no test coverage detected