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
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;
|
|
}
|