aboutsummaryrefslogtreecommitdiff
path: root/utils/Utils.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'utils/Utils.cpp')
-rw-r--r--utils/Utils.cpp41
1 files changed, 40 insertions, 1 deletions
diff --git a/utils/Utils.cpp b/utils/Utils.cpp
index a5c6a95a2a..133248e30c 100644
--- a/utils/Utils.cpp
+++ b/utils/Utils.cpp
@@ -74,7 +74,11 @@ int run_example(int argc, char **argv, std::unique_ptr<Example> example)
try
{
- example->do_setup(argc, argv);
+ bool status = example->do_setup(argc, argv);
+ if(!status)
+ {
+ return 1;
+ }
example->do_run();
example->do_teardown();
@@ -141,6 +145,41 @@ void draw_detection_rectangle(ITensor *tensor, const DetectionWindow &rect, uint
}
}
+ImageType get_image_type_from_file(const std::string &filename)
+{
+ ImageType type = ImageType::UNKNOWN;
+
+ try
+ {
+ // Open file
+ std::ifstream fs;
+ fs.exceptions(std::ifstream::failbit | std::ifstream::badbit);
+ fs.open(filename, std::ios::in | std::ios::binary);
+
+ // Identify type from magic number
+ std::array<unsigned char, 2> magic_number{ { 0 } };
+ fs >> magic_number[0] >> magic_number[1];
+
+ // PPM check
+ if(static_cast<char>(magic_number[0]) == 'P' && static_cast<char>(magic_number[1]) == '6')
+ {
+ type = ImageType::PPM;
+ }
+ else if(magic_number[0] == 0xFF && magic_number[1] == 0xD8)
+ {
+ type = ImageType::JPEG;
+ }
+
+ fs.close();
+ }
+ catch(std::runtime_error &e)
+ {
+ ARM_COMPUTE_ERROR("Accessing %s: %s", filename.c_str(), e.what());
+ }
+
+ return type;
+}
+
std::tuple<unsigned int, unsigned int, int> parse_ppm_header(std::ifstream &fs)
{
// Check the PPM magic number is valid