/* * @Author: xiewenji 527774126@qq.com * @Date: 2025-07-04 16:18:48 * @LastEditors: xiewenji 527774126@qq.com * @LastEditTime: 2025-09-06 22:37:59 * @FilePath: /AI_SO_Test/AIEngineModule/example/test_example.cpp * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE */ #include #include #include #include "deal.h" #include #include #include #include #include #include "AI_Factory.h" #include #include #include #include #include #include #include #include long getcurTime() { struct timeval tv; gettimeofday(&tv, NULL); return ((long)tv.tv_sec) * 1000 + ((long)tv.tv_usec) / 1000; } void handler(int sig) { printf("Get handler sig"); std::string strcmd = "ps -ef | grep test_JBL_Check| awk '{print $2}' | xargs kill -9 "; const char *cmd = strcmd.c_str(); printf("delete test_JBL_Check success"); if (-1 == system(cmd)) { std::cout << "error" << std::endl; } // delete UnderCarriageCoreLogic::GetInstance(); exit(0); } int _sysmkdir(const std::string &dir) { int ret = mkdir(dir.c_str(), S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH); if (ret && errno == EEXIST) { //printf("dir[%s] already exist.\n", dir.c_str()); } else if (ret) { printf("create dir[%s] error: %d %s\n", dir.c_str(), ret, strerror(errno)); return -1; } else { printf("create dir[%s] success.\n", dir.c_str()); } return 0; } std::string __getParentDir(const std::string &dir) { std::string pdir = dir; if (pdir.length() < 1 || (pdir[0] != '/')) { return ""; } while (pdir.length() > 1 && (pdir[pdir.length() - 1] == '/')) pdir = pdir.substr(0, pdir.length() - 1); pdir = pdir.substr(0, pdir.find_last_of('/')); return pdir; } int _sysmkdirs(const std::string &dir) { int ret = 0; if (dir.empty()) return -1; std::string pdir; if ((ret = _sysmkdir(dir)) == -1) { pdir = __getParentDir(dir); if ((ret = _sysmkdirs(pdir)) == 0) { ret = _sysmkdirs(dir); } } return ret; } int main(int argc, char *argv[]) { // std::shared_ptr AI_Factory; // AI_Factory = AIFactory::GetInstance(); // GPU_Config gpu; // AI_Factory->InitALLAIModle(gpu); // std::shared_ptr BOE_Edge_Detect = AI_Factory->BOE_Edge_Detect; // BOE_Edge_Detect->input_0.print(); // BOE_Edge_Detect->input_1.print(); // BOE_Edge_Detect->output_0.print(); // BOE_Edge_Detect->output_1.print(); // BOE_Edge_Detect->output_2.print(); // std::shared_ptr JBL_Detect = AI_Factory->JBL_Detect; // JBL_Detect->input_0.print(); // JBL_Detect->input_1.print(); // JBL_Detect->output_0.print(); // JBL_Detect->output_1.print(); // JBL_Detect->output_2.print(); // cv::Mat temimg = cv::imread("../data/20250319_192154_Main_0_2_L255_Org.tif", 0); // cv::Mat dealImg; // printf("src img %d %d \n", temimg.cols, temimg.rows); // cv::Size sz = cv::Size(BOE_Edge_Detect->input_0.width, BOE_Edge_Detect->input_0.height); // cv::resize(temimg, dealImg, cv::Size(BOE_Edge_Detect->input_0.width, BOE_Edge_Detect->input_0.height)); // cv::Mat outimg; // BOE_Edge_Detect->AIDet(dealImg, outimg); // cv::imwrite("outimg.png", outimg); // { // long t1 = getcurTime(); // cv::Mat output; // for (int i = 0; i < 1000; ++i) // { // cv::resize(temimg, dealImg, sz); // BOE_Edge_Detect->AIDet(dealImg, outimg); // } // long t2 = getcurTime(); // std::cout << "== run 1000 : " << t2 - t1 << " 毫秒" << std::endl; // // cv::imwrite(name + "_output.jpg", output); // // std::cout << "[" << name << "] done\n"; // }; // printf("========================\n"); // { // long t1 = getcurTime(); // // Lambda 线程函数 // auto run_detection = [](std::shared_ptr engine, const cv::Mat &input, const cv::Size sz, const std::string &name) // { // cv::Mat output; // for (int i = 0; i < 250; ++i) // { // cv::Mat dealImg123; // cv::resize(input, dealImg123, sz); // // printf("%s ---- \n",name.c_str()); // engine->AIDet(dealImg123, output); // // cv::imwrite(name + "_" + std::to_string(i) + "_output.jpg", output); // } // // cv::imwrite(name + "_output.jpg", output); // // std::cout << "[" << name << "] done\n"; // }; // // 启动两个线程 // std::thread thread1(run_detection, BOE_Edge_Detect, temimg, sz, "manager1"); // std::thread thread2(run_detection, BOE_Edge_Detect, temimg, sz, "manager2"); // std::thread thread3(run_detection, BOE_Edge_Detect, temimg, sz, "manager3"); // std::thread thread4(run_detection, BOE_Edge_Detect, temimg, sz, "manager4"); // // std::thread thread5(run_detection, BOE_Edge_Detect, dealImg, "manager1"); // // std::thread thread6(run_detection, BOE_Edge_Detect, dealImg, "manager2"); // // std::thread thread7(run_detection, BOE_Edge_Detect, dealImg, "manager3"); // // std::thread thread8(run_detection, BOE_Edge_Detect, dealImg, "manager4"); // // 等待线程结束 // thread1.join(); // thread2.join(); // thread3.join(); // thread4.join(); // // thread5.join(); // // thread6.join(); // // thread7.join(); // // thread8.join(); // long t2 = getcurTime(); // std::cout << "run 1000 = thread 4 * 250 耗时: " << t2 - t1 << " 毫秒" << std::endl; // } // cv::Mat dealImg123; // cv::resize(temimg, dealImg123, cv::Size(JBL_Detect->input_0.width, JBL_Detect->input_0.height)); // float fss = 0; // int rclass = JBL_Detect->AIClass(dealImg123, &fss); // printf("test ------------rclass %d score %f\n", rclass, fss); // // printf("%d %d\n", manager_1->BOE_Edge_Detect->m_img_In_0.width, manager_1->BOE_Edge_Detect->m_img_In_0.height); // // std::string strModelPath = "/home/aidlux/BOE/UseModel/Edge_Big.engine"; // // std::string strModelPath_jbl = "/home/aidlux/BOE/UseModel/class_14.engine"; // // std::shared_ptr manager_1 = AIManagerBase::GetInstance(0); // // std::shared_ptr manager_2 = AIManagerBase::GetInstance(1); // // std::shared_ptr manager_3 = AIManagerBase::GetInstance(0); // // std::cout << "manager_1 instance address: " << manager_1.get() << std::endl; // // std::cout << "manager_2 instance address: " << manager_2.get() << std::endl; // // std::cout << "manager_3 instance address: " << manager_3.get() << std::endl; // // std::cout << "manager_1->BOE_Edge_Detect instance address: " << manager_1->BOE_Edge_Detect.get() << std::endl; // // std::cout << "manager_2->BOE_Edge_Detect instance address: " << manager_2->BOE_Edge_Detect.get() << std::endl; // // std::cout << "manager_3->BOE_Edge_Detect instance address: " << manager_3->BOE_Edge_Detect.get() << std::endl; // // std::cout << "manager_1->JBL_Detect instance address: " << manager_1->JBL_Detect.get() << std::endl; // // std::cout << "manager_2->JBL_Detect instance address: " << manager_2->JBL_Detect.get() << std::endl; // // std::cout << "manager_3->JBL_Detect instance address: " << manager_3->JBL_Detect.get() << std::endl; // // manager_1->BOE_Edge_Detect->Init(strModelPath); // // manager_2->BOE_Edge_Detect->Init(strModelPath); // // manager_3->BOE_Edge_Detect->Init(strModelPath); // // manager_1->JBL_Detect->Init(strModelPath_jbl); // // manager_2->JBL_Detect->Init(strModelPath_jbl); // // manager_3->JBL_Detect->Init(strModelPath_jbl); // // cv::Mat temimg = cv::imread("/home/aidlux/xwj/AI_SO_Test/data/img/20250319_192154_Main_0_2_L255_Org.tif", 0); // // cv::Mat dealImg; // // printf("%d %d\n", manager_1->BOE_Edge_Detect->m_img_In_0.width, manager_1->BOE_Edge_Detect->m_img_In_0.height); // // if (manager_1->BOE_Edge_Detect) // // { // // cv::resize(temimg, dealImg, cv::Size(manager_1->BOE_Edge_Detect->m_img_In_0.width, manager_1->BOE_Edge_Detect->m_img_In_0.height)); // // cv::Mat outimg; // // manager_1->BOE_Edge_Detect->AIDet(dealImg, outimg); // // manager_2->BOE_Edge_Detect->AIDet(dealImg, outimg); // // { // // long t1 = getcurTime(); // // cv::Mat output; // // for (int i = 0; i < 500; ++i) // // { // // manager_1->BOE_Edge_Detect->AIDet(dealImg, output); // // } // // for (int i = 0; i < 500; ++i) // // { // // manager_1->BOE_Edge_Detect->AIDet(dealImg, output); // // } // // long t2 = getcurTime(); // // std::cout << "run 1000 : " << t2 - t1 << " 毫秒" << std::endl; // // // cv::imwrite(name + "_output.jpg", output); // // // std::cout << "[" << name << "] done\n"; // // }; // // long t1 = getcurTime(); // // // Lambda 线程函数 // // auto run_detection = [](std::shared_ptr engine, const cv::Mat &input, const std::string &name) // // { // // cv::Mat output; // // for (int i = 0; i < 500; ++i) // // { // // engine->AIDet(input, output); // // } // // // cv::imwrite(name + "_output.jpg", output); // // // std::cout << "[" << name << "] done\n"; // // }; // // // 启动两个线程 // // std::thread thread1(run_detection, manager_1->BOE_Edge_Detect, dealImg, "manager1"); // // std::thread thread2(run_detection, manager_1->BOE_Edge_Detect, dealImg, "manager3"); // // // 等待线程结束 // // thread1.join(); // // thread2.join(); // // // for (int i = 0; i < 1000; i++) // // // { // // // manager_1->BOE_Edge_Detect->AIDet(dealImg, outimg); // // // // manager_3->BOE_Edge_Detect->AIDet(dealImg, outimg); // // // } // // long t2 = getcurTime(); // // std::cout << "run 1000 = thread 2 * 500 耗时: " << t2 - t1 << " 毫秒" << std::endl; // // cv::imwrite("dealImg.jpg", dealImg); // // cv::imwrite("outimg.jpg", outimg); // // } // // cv::Mat dealImg123; // // cv::resize(temimg, dealImg123, cv::Size(manager_1->JBL_Detect->m_img_In_0.width, manager_1->JBL_Detect->m_img_In_0.height)); // // float fss = 0; // // int rclass = manager_1->JBL_Detect->AIClass(dealImg, &fss); // // long t11 = getcurTime(); // // rclass = manager_1->JBL_Detect->AIClass(dealImg, &fss); // // long t12 = getcurTime(); // // printf("test ------------rclass %d score %f------- time %ld\n", rclass, fss, t12 - t11); // // printf("test ------------------- \n"); // getchar(); return 0; }