feat 图片拆分

main
liusiyang 3 weeks ago
parent 11d7ca579a
commit 0fbfccf161

@ -50,6 +50,9 @@ public:
// 设置检测数据,并开启检测 返回0 成AT_THRESHOLD_TYPE_READY功 其他异常
int SetDataRun_SharePtr(std::shared_ptr<shareImage> p);
// 分割图片
int split_img(cv::Mat img, std::vector<cv::Mat> &out_img_list);
// 获取结果信息 返回0 成功 其他异常
int GetCheckReuslt(std::shared_ptr<CheckResult> &pResult);
int ReJson(std::shared_ptr<shareImage> p, std::shared_ptr<CheckResult> &pResult);

@ -136,6 +136,20 @@ ALLImgCheckAnalysisy::~ALLImgCheckAnalysisy()
StopThread();
}
int ALLImgCheckAnalysisy::split_img(cv::Mat img, std::vector<cv::Mat> &out_img_list)
{
out_img_list.clear();
if (img.empty() || img.rows < 2)
{
return -1;
}
// 上下拆分成两张
int half = img.rows / 2;
out_img_list.push_back(img(cv::Rect(0, 0, img.cols, half)).clone());
out_img_list.push_back(img(cv::Rect(0, half, img.cols, img.rows - half)).clone());
return 0;
}
int ALLImgCheckAnalysisy::RunStart(void *pconfig1)
{
VERSION_INFO *pVersionconfig = (VERSION_INFO *)pconfig1;

@ -100,6 +100,7 @@ deal::deal()
m_nCamIdx = 0;
m_nCurUseCPUIDX = 0;
m_nSaveDetprocessImg = 0;
m_nPushImgCount = 0;
m_DetResult.Init();
for (int i = 0; i < READ_IMG_THREAD_NUM; i++)
{
@ -398,7 +399,7 @@ int deal::preCheck()
IN_IMG_Status_ temstatus = IN_IMG_Status_Start;
std::shared_ptr<JC_IMAGE_INFO_> tempDetImageInfo = nullptr;
int pushImgNum = 0;
m_nPushImgCount = 0; // 重置送检计数(拆分后每张子图计 1
long det_time_start = getcurTime();
std::string strImgSN = strProductID;
int GetImgNum = 0;
@ -460,7 +461,7 @@ int deal::preCheck()
saveImg("/home/aidlux/BOE/ZB_PLATE/testresult/", checkResult);
getresultNum++;
if (getresultNum == pushImgNum)
if (getresultNum >= m_nPushImgCount)
{
break;
@ -1079,12 +1080,47 @@ int deal::SendImgToCheck(std::shared_ptr<JC_IMAGE_INFO_> pDetImageInfo, IN_IMG_S
{
tem->bsaveProcessImg = true;
}
int re = 0;
// 一张图拍多个产品上下拆分成多张子图产品ID加索引后缀分别送检
std::vector<cv::Mat> splitList;
if (!pDetImageInfo->img.empty() && pDetImageInfo->img.rows >= 2)
{
int half = pDetImageInfo->img.rows / 2;
splitList.push_back(pDetImageInfo->img(cv::Rect(0, 0, pDetImageInfo->img.cols, half)).clone());
splitList.push_back(pDetImageInfo->img(cv::Rect(0, half, pDetImageInfo->img.cols, pDetImageInfo->img.rows - half)).clone());
}
if (splitList.size() > 1)
{
for (size_t i = 0; i < splitList.size(); i++)
{
std::shared_ptr<shareImage> sub = std::make_shared<shareImage>();
*sub = *tem;
sub->img = splitList[i];
sub->strImgProductID = tem->strImgProductID + "_" + std::to_string(i);
sub->Status = IN_IMG_Status_OneImg;
if (m_pALLImgCheckAnalysisy)
{
re = m_pALLImgCheckAnalysisy->SetDataRun_SharePtr(sub);
if (re != 0)
{
return re;
}
}
m_nPushImgCount++;
}
return 0;
}
if (m_pALLImgCheckAnalysisy)
{
re = m_pALLImgCheckAnalysisy->SetDataRun_SharePtr(tem);
if (re == 0)
{
m_nPushImgCount++;
}
}
return re;

@ -647,6 +647,7 @@ public:
ImageInfo m_ImgInfo_result;
int m_nSaveDetprocessImg;
int m_nPushImgCount; // 送检图片总数(拆分后)
cv::Rect m_CutRoi;
Det_File_Result_Info m_DetResult;

Loading…
Cancel
Save