You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

303 lines
10 KiB

/*
* @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 <iostream>
#include <string>
#include <signal.h>
#include "deal.h"
#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>
#include <string.h>
#include <thread>
#include "AI_Factory.h"
#include <chrono>
#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>
#include <string>
#include <sstream>
#include <sys/time.h>
#include <sys/statfs.h>
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<AIFactory> AI_Factory;
// AI_Factory = AIFactory::GetInstance();
// GPU_Config gpu;
// AI_Factory->InitALLAIModle(gpu);
// std::shared_ptr<AIModel_Base> 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<AIModel_Base> 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<AIModel_Base> 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<AIManagerBase> manager_1 = AIManagerBase::GetInstance(0);
// // std::shared_ptr<AIManagerBase> manager_2 = AIManagerBase::GetInstance(1);
// // std::shared_ptr<AIManagerBase> 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<AIEngineBase> 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;
}