update 原图也不改变通道,修复内定位绘制

dev_lsy
liusiyang 4 weeks ago
parent 40ba4cea63
commit 5d92931141

@ -258,6 +258,15 @@ int AI_Edge_Algin::Detect(const cv::Mat &img, DetConfig *pDetConfig, std::shared
return re; return re;
} }
// Get_Edge 返回的是其输入图坐标系下的 roi;内定位在 Big_roi 裁剪图上执行,
// 这里把裁剪偏移加回,保证 smallroi 与 bigroi 同为原图坐标系
// (下游内外中心偏移对比、模板对齐仿射变换和结果图绘制都依赖该坐标系)
{
cv::Rect bigRect = Big_roi.boundingRect();
Small_roi.center.x += static_cast<float>(bigRect.x);
Small_roi.center.y += static_cast<float>(bigRect.y);
}
m_pCheckResult_Aling->bigroi = Big_roi; m_pCheckResult_Aling->bigroi = Big_roi;
m_pCheckResult_Aling->smallroi = Small_roi; m_pCheckResult_Aling->smallroi = Small_roi;

@ -2320,7 +2320,20 @@ int ImgCheckAnalysisy::ImgPreDet()
creatsavedir(); creatsavedir();
} }
m_CheckResult_shareP->cutSrcimg = m_pImageAllResult->detImg; // _RE_CutImg 裁剪图保持传图原图通道(彩色原图 -> 彩色裁剪图),不再直接使用灰度检测图;
// ReJson 复测模式的输入本身就是裁剪图,以及 ROI 越界等异常情况,退回检测图
{
const cv::Mat &srcImg = m_CheckResult_shareP->in_shareImage->img;
if (m_CheckResult_shareP->in_shareImage->Det_Mode != DET_MODE_ReJson &&
!srcImg.empty() && CheckUtil::RoiInImg(m_outer_roi, srcImg))
{
m_CheckResult_shareP->cutSrcimg = srcImg(m_outer_roi).clone();
}
else
{
m_CheckResult_shareP->cutSrcimg = m_pImageAllResult->detImg;
}
}
ResizeImg(); ResizeImg();
m_pImageAllResult->fscale_detToresult_x = m_pImageAllResult->resultImg.cols * 1.0f / m_pImageAllResult->detImg.cols; m_pImageAllResult->fscale_detToresult_x = m_pImageAllResult->resultImg.cols * 1.0f / m_pImageAllResult->detImg.cols;

Loading…
Cancel
Save