From 9a5f2085c5772cf943bde46b3ee12f6ca3b51260 Mon Sep 17 00:00:00 2001 From: zjkhahah <107382486+zjkhahah@users.noreply.github.com> Date: Tue, 17 Sep 2024 21:03:01 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E4=BA=86=E9=83=A8=E5=88=86bu?= =?UTF-8?q?g=20=E5=A2=9E=E5=8A=A0=E6=A8=A1=E5=9E=8B=E6=94=AF=E6=8C=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 1.png | Bin 47344 -> 0 bytes main.cpp | 16 +++++++++++----- src/human_matting.cpp | 23 ++++++++++++++--------- 3 files changed, 25 insertions(+), 14 deletions(-) delete mode 100644 1.png diff --git a/1.png b/1.png deleted file mode 100644 index a88d81ca6d24e3e090d3fdc700569b75bd27fdeb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 47344 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 diff --git a/main.cpp b/main.cpp index 99ae490..7878298 100644 --- a/main.cpp +++ b/main.cpp @@ -10,7 +10,8 @@ int main(int argc, char* argv[]) { cmdline::parser p; p.add("input_image", 'i', "Enter image path", false, "./demo/images/test2.jpg"); p.add("output_image", 'o', "Enter image path", false, "."); - p.add("out_size_kb", 'k', "image size", false, 20); + p.add("segment_model", 's', "segment model name", false, "mnn_hivision_modnet.mnn"); + p.add("out_size_kb", 'k', "image size", false, 0); p.add("thread_num", 't', "model use thread num", false, 4); p.add("background_color_r", 'r', "background red", false, 255); p.add("background_color_g", 'g', "background green", false, 0); @@ -19,7 +20,7 @@ int main(int argc, char* argv[]) { p.add("out_images_height", 'h', "out images height", false, 413); p.add("face_model", 'f', "face_model type 5 and 8", false, 8); std::string face_model_path = "./model"; - const char* segment_modnet = "./model/mnn_hivision_modnet.mnn"; + //const char* segment_modnet = "./model/mnn_hivision_modnet.mnn"; p.parse_check(argc, argv); params.out_image_width=p.get("out_images_width"); @@ -27,12 +28,15 @@ int main(int argc, char* argv[]) { params.rgb_b=p.get("background_color_b"); params.rgb_g=p.get("background_color_g"); params.rgb_r=p.get("background_color_r"); - + + std::string modelFilename = p.get("segment_model"); + std::string modelPath = "./model/" + modelFilename; + const char* modelPathCStr = modelPath.c_str(); cv::Vec3b newBackgroundColor(p.get("background_color_b"), p.get("background_color_g"), p.get("background_color_r")); LFFD* face_detector = new LFFD(face_model_path, p.get("face_model"), p.get("thread_num")); cv::Mat image = cv::imread(p.get("input_image"), cv::IMREAD_COLOR); - cv::Mat bgra_img= Interference(segment_modnet, image,4); + cv::Mat bgra_img= Interference(modelPathCStr, image,4); cv::Mat add_background_img = addBackground(bgra_img, newBackgroundColor); cv::cvtColor(add_background_img, add_background_img, cv::COLOR_BGRA2BGR); @@ -53,7 +57,9 @@ int main(int argc, char* argv[]) { } free(face_detector); cv::Mat hd_result= photo_adjust(params, add_background_img); - resizeImageToKB(hd_result, p.get < std::string>("output_image")+"result_kb.png",p.get ("out_size_kb") ); + if(p.get("out_size_kb")>0){ + resizeImageToKB(hd_result, p.get < std::string>("output_image")+"result_kb.png",p.get ("out_size_kb") ); + } cv::Mat standard_result; cv::Size standard_size(params.out_image_width, params.out_image_height); cv::resize(hd_result, standard_result, standard_size); diff --git a/src/human_matting.cpp b/src/human_matting.cpp index 02c6eee..f64343e 100644 --- a/src/human_matting.cpp +++ b/src/human_matting.cpp @@ -97,14 +97,14 @@ cv::Mat Interference(const char* & mnn_path, cv::Mat input_BgrImg,int num_threa auto input = net->getSessionInput(session, nullptr); int size_w = 512; // 初始化宽度 int size_h = 512; // 初试化高度 + int bpp =3; auto shape = input->shape(); - if (shape[0] != 1) { - shape[0] = 1; - net->resizeTensor(input, shape); - net->resizeSession(session); - } - { - int bpp = 0; + if(shape[2]!=-1||shape[3]!=-1){ + if (shape[0] != 1) { + shape[0] = 1; + net->resizeTensor(input, shape); + net->resizeSession(session); + } bpp = shape[1]; size_h = shape[2]; size_w = shape[3]; @@ -114,9 +114,14 @@ cv::Mat Interference(const char* & mnn_path, cv::Mat input_BgrImg,int num_threa size_h = 1; if (size_w == 0) size_w = 1; - MNN_PRINT("input: w:%d , h:%d, bpp: %d\n", size_w, size_h, bpp); } - + else{ + std::vector shape = {1, bpp, size_h, size_w}; // 假设框架使用 NHWC 格式 + net->resizeTensor(input, shape); + net->resizeSession(session); + } + MNN_PRINT("input: w:%d , h:%d, bpp: %d\n", size_w, size_h, bpp); + cv::Mat pre_img = seg_preprocess( matBgrImg,size_w, size_h); std::vector> nChannels; std::vector rgbChannels(3);