From 9aaeb671a854ce2b13d63ec9e3382ccbaee890a1 Mon Sep 17 00:00:00 2001 From: lxowalle Date: Fri, 2 Aug 2024 11:50:53 +0800 Subject: [PATCH] * add new test for image_method --- examples/image_method/main/src/main.cpp | 13 +++++++----- .../image_method/main/src/test_find_blobs.cpp | 20 +++++++++++++++++++ ...t_image_gaussian.cpp => test_gaussian.cpp} | 4 +--- examples/image_method/main/src/test_image.hpp | 11 ++++++++++ 4 files changed, 40 insertions(+), 8 deletions(-) create mode 100644 examples/image_method/main/src/test_find_blobs.cpp rename examples/image_method/main/src/{test_image_gaussian.cpp => test_gaussian.cpp} (60%) create mode 100644 examples/image_method/main/src/test_image.hpp diff --git a/examples/image_method/main/src/main.cpp b/examples/image_method/main/src/main.cpp index dea6a2c6..36ac3e3b 100644 --- a/examples/image_method/main/src/main.cpp +++ b/examples/image_method/main/src/main.cpp @@ -11,6 +11,8 @@ #include #include +#include "test_image.hpp" + using namespace maix; typedef struct { @@ -30,7 +32,6 @@ typedef struct { static priv_t priv; static int cmd_init(int argc, char* argv[]); -int test_gaussion(image::Image *img); int _main(int argc, char* argv[]) { @@ -77,11 +78,12 @@ int main(int argc, char* argv[]) static void cmd_helper(void) { + log::info("Image method index:"); for (size_t i = 0; i < priv.method_list.size(); i ++) { - log::info("[%d] %s\r\n", i, priv.method_list[i].name); + log::info("\t[%d] %s", i, priv.method_list[i].name); } - log::info("Input "); + log::info("Input "); log::info(" = 0, measn image::FMT_RGB888"); log::info(" = 12, measn image::FMT_GRAYSCALE"); log::info("Example: ./image_method 0 320 240 0 60 2 // test gaussion"); @@ -96,8 +98,9 @@ static int cmd_init(int argc, char* argv[]) priv.cam_buffnum = 2; // Config image method - priv.method_list.push_back(image_method_t{"no method", NULL}); + priv.method_list.push_back(image_method_t{"no method(default)", NULL}); priv.method_list.push_back(image_method_t{"gaussian", test_gaussion}); + priv.method_list.push_back(image_method_t{"find_blobs", test_find_blobs}); // Get init param if (argc > 1) { @@ -139,6 +142,6 @@ static int cmd_init(int argc, char* argv[]) } else { log::info("Use method: %d %s", priv.image_method_idx, priv.method_list[priv.image_method_idx].name); } - log::info("Use width:%d hieght:%d format:%d fps:%d buffer number:%d\r\n", priv.cam_w, priv.cam_h, priv.cam_fmt, priv.cam_fps, priv.cam_buffnum); + log::info("Use width:%d hieght:%d format:%d fps:%d buffer number:%d", priv.cam_w, priv.cam_h, priv.cam_fmt, priv.cam_fps, priv.cam_buffnum); return 0; } diff --git a/examples/image_method/main/src/test_find_blobs.cpp b/examples/image_method/main/src/test_find_blobs.cpp new file mode 100644 index 00000000..dfe302e2 --- /dev/null +++ b/examples/image_method/main/src/test_find_blobs.cpp @@ -0,0 +1,20 @@ +#include "test_image.hpp" + +int test_find_blobs(image::Image *img) { + std::vector blobs; + std::vector> thresholds = {{46, 66, 41, 61, 3, 23}}; + bool invert = false; + int x_stride = 2; + int y_stride = 1; + int area_threshold = 500; + int pixels_threshold = 500; + std::vector roi = {1, 1, img->width()- 1, img->height() - 1}; + blobs = img->find_blobs(thresholds, invert, roi, x_stride, y_stride, area_threshold, pixels_threshold); + for (auto &a : blobs) { + std::vector> mini_corners = a.mini_corners(); + for (int i = 0; i < 4; i ++) { + img->draw_line(mini_corners[i][0], mini_corners[i][1], mini_corners[(i + 1) % 4][0], mini_corners[(i + 1) % 4][1], maix::image::Color::from_rgb(0, 255, 0), 2); + } + } + return 0; +} \ No newline at end of file diff --git a/examples/image_method/main/src/test_image_gaussian.cpp b/examples/image_method/main/src/test_gaussian.cpp similarity index 60% rename from examples/image_method/main/src/test_image_gaussian.cpp rename to examples/image_method/main/src/test_gaussian.cpp index cc5a3241..e21cf41b 100644 --- a/examples/image_method/main/src/test_image_gaussian.cpp +++ b/examples/image_method/main/src/test_gaussian.cpp @@ -1,6 +1,4 @@ -#include "maix_vision.hpp" - -using namespace maix; +#include "test_image.hpp" int test_gaussion(image::Image *img) { img->gaussian(2); diff --git a/examples/image_method/main/src/test_image.hpp b/examples/image_method/main/src/test_image.hpp new file mode 100644 index 00000000..fc55fb22 --- /dev/null +++ b/examples/image_method/main/src/test_image.hpp @@ -0,0 +1,11 @@ +#ifndef __TEST_IMAGE__HPP +#define __TEST_IMAGE__HPP + +#include "maix_vision.hpp" + +using namespace maix; + +int test_find_blobs(image::Image *img); +int test_gaussion(image::Image *img); + +#endif \ No newline at end of file