From 04d89bc9216553adcd0df87985a7665882924093 Mon Sep 17 00:00:00 2001
From: mrDarker <mr.darker@163.com>
Date: 星期五, 22 八月 2025 17:56:10 +0800
Subject: [PATCH] 1. 优化Notch计算周长,使用比例的形式计算
---
EdgeInspector_App/Process/InspectCamera.cpp | 12 +++++++++---
1 files changed, 9 insertions(+), 3 deletions(-)
diff --git a/EdgeInspector_App/Process/InspectCamera.cpp b/EdgeInspector_App/Process/InspectCamera.cpp
index 0f820fd..178ab4e 100644
--- a/EdgeInspector_App/Process/InspectCamera.cpp
+++ b/EdgeInspector_App/Process/InspectCamera.cpp
@@ -4443,6 +4443,10 @@
strTemp.Format(_T("Notch\\Notch_%d_Defect_ProcBinImage"), nNotchIdx);
SaveDebugImage(emDim, stFrame, pProcBinImage, strTemp);
+ const double dExpectedLen = 6500;
+ const double dMinNotchLen = 0.20 * dExpectedLen;
+ const double dAlarmAbs = 0.10 * dExpectedLen;
+
CvSeq* pContours = nullptr;
CvMemStorage* pStorage = cvCreateMemStorage(0);
cvFindContours(pProcBinImage, pStorage, &pContours, sizeof(CvContour), CV_RETR_EXTERNAL, CV_CHAIN_APPROX_SIMPLE);
@@ -4452,11 +4456,12 @@
}
double dLength = cvArcLength(c);
- if (dLength < 2000) {
+ if (dLength < dMinNotchLen) {
continue;
}
+ g_pLog->DisplayMessage(_T("Notch defect contour length: %f, Frame: %d, Scan: %d, Camera: %d, NotchIdx: %d"), dLength, stFrame.nFrameIdx, stFrame.nScanIdx, m_iCamera, nNotchIdx);
- if (std::abs(dLength - 7000) > 1000) {
+ if (std::abs(dLength - dExpectedLen) > dAlarmAbs) {
CvRect rect = cvBoundingRect(c, 0);
CRect rtDefectPos_pxl(
rect.x + rtROI.left,
@@ -4487,7 +4492,7 @@
info.m_rtDefectPos_pxl = rtDefectPos_pxl;
info.m_DefectLoc = DefectLoc_Notch_Broken;
m_pDefectControl->ExtractDefect_NotchBroken(emDim, m_iCamera, stFrame.nScanIdx, info);
- g_pLog->DisplayMessage(_T("[WARN] Notch defect contour length deviates significantly from expected: %f"), dLength);
+ g_pLog->DisplayMessage(_T("Notch defect contour length deviates significantly from expected: %f"), dLength);
break;
}
}
@@ -4520,6 +4525,7 @@
int iFrame = stFrame.nFrameIdx;
CRect rtProcessArea = rtROI;
+
int nMinSize_X = (pNotchParam->m_nNotch_Inspect_Defect_Min_X_um / (int)m_pGlassData->GetSideData(emDim)->m_dPixelSizeX);
int nMinSize_Y = (pNotchParam->m_nNotch_Inspect_Defect_Min_Y_um / (int)m_pGlassData->GetSideData(emDim)->m_dPixelSizeY);
int nMinSize = 0;
--
Gitblit v1.9.3