diff --git a/AlgorithmModule/src/AI_Edge_Algin.cpp b/AlgorithmModule/src/AI_Edge_Algin.cpp index 52375e4..df10acb 100644 --- a/AlgorithmModule/src/AI_Edge_Algin.cpp +++ b/AlgorithmModule/src/AI_Edge_Algin.cpp @@ -258,6 +258,15 @@ int AI_Edge_Algin::Detect(const cv::Mat &img, DetConfig *pDetConfig, std::shared return re; } + // Get_Edge 返回的是其输入图坐标系下的 roi;内定位在 Big_roi 裁剪图上执行, + // 这里把裁剪偏移加回,保证 smallroi 与 bigroi 同为原图坐标系 + // (下游内外中心偏移对比、模板对齐仿射变换和结果图绘制都依赖该坐标系) + { + cv::Rect bigRect = Big_roi.boundingRect(); + Small_roi.center.x += static_cast(bigRect.x); + Small_roi.center.y += static_cast(bigRect.y); + } + m_pCheckResult_Aling->bigroi = Big_roi; m_pCheckResult_Aling->smallroi = Small_roi; diff --git a/AlgorithmModule/src/ImgCheckAnalysisy.cpp b/AlgorithmModule/src/ImgCheckAnalysisy.cpp index 8f3f54c..53fd921 100644 --- a/AlgorithmModule/src/ImgCheckAnalysisy.cpp +++ b/AlgorithmModule/src/ImgCheckAnalysisy.cpp @@ -2320,7 +2320,20 @@ int ImgCheckAnalysisy::ImgPreDet() 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(); m_pImageAllResult->fscale_detToresult_x = m_pImageAllResult->resultImg.cols * 1.0f / m_pImageAllResult->detImg.cols;