mrDarker
2025-07-10 38672b1904bcb6855041f9f7d7d23ed97c0c1d07
合并:帮助别人提交
已修改1个文件
47 ■■■■ 文件已修改
EdgeInspector_App/Process/InspectCamera.cpp 47 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
EdgeInspector_App/Process/InspectCamera.cpp
@@ -4325,10 +4325,15 @@
        vecDefectCandidateList.push_back(defectInfo);
    }
    m_pDefectControl->ExtractDefect_Notch(emDim, m_iCamera, stFrame.nScanIdx, nNotchIdx, &vecDefectCandidateList);
#else
#else
#if MINI_LED
    nOffset = m_nChamferOffset_um / m_pGlassData->GetSideData(emDim)->m_dPixelSizeX;
    nOffset += pNotchParam->m_nNotch_Inspect_Defect_Offset;
    m_nChamferOffset_um = 0;
#else
    nOffset = pNotchParam->m_nNotch_Inspect_Defect_Offset;
#endif // MINI_LED
    CRect rcIns = rtROI;
    rcIns.OffsetRect(-rcIns.left,-rcIns.top);
@@ -4337,9 +4342,8 @@
    IplImage* pProcessCanny = cvCreateImage(cvSize(rcIns.Width(), rcIns.Height()), 8, 1);
    IplImage* pProcessBin = cvCreateImage(cvSize(rcIns.Width(), rcIns.Height()), 8, 1);
    IplImage* pMaskImage = cvCreateImage(cvSize(rcIns.Width(), rcIns.Height()), 8, 1);
    IplImage* pMaskImage1 = cvCreateImage(cvSize(rcIns.Width(), rcIns.Height()), 8, 1);
    IplImage* pdstImage = cvCreateImage(cvSize(rcIns.Width(), rcIns.Height()), 8, 1);//绘画轮廓
    IplImage* ptempImage1 = cvCreateImage(cvSize(rcIns.Width(), rcIns.Height()), 8, 1);//凸包
    IplImage* pDilatedMaskImage = cvCreateImage(cvSize(rcIns.Width(), rcIns.Height()), 8, 1);
    for(int i=0; i<rcIns.Height(); i++)
    {
        memcpy(pProcImage->imageData+(i*pProcImage->widthStep), scr->imageData+(rtROI.left + (i*scr->widthStep)), rcIns.Width());
@@ -4359,8 +4363,8 @@
    strTemp.Format(_T("Notch\\Notch_%d_Defect_EdgeOrBin"), nNotchIdx);
    SaveDebugImage(emDim, stFrame, pMaskImage, strTemp);
    
    BOOL        bFind;
    int            nFindX;
    BOOL bFind;
    int     nFindX;
    for(int y=0;y<pMaskImage->height;y++)
    {
        bFind = FALSE;
@@ -4379,11 +4383,6 @@
        {
            memset(&pMaskImage->imageData[y*pMaskImage->widthStep], 255, nFindX);
            memset(&pMaskImage->imageData[y*pMaskImage->widthStep+nFindX], 0, pMaskImage->width - nFindX);
            //for (int x = 0; x < nFindX; x++)
            //    pMaskImage->imageData[y * pMaskImage->widthStep + x] = 255;
            //for (int x = nFindX; x < pMaskImage->width; x++)
            //    pMaskImage->imageData[y * pMaskImage->widthStep + x] = 0;
        }
    }
@@ -4408,15 +4407,17 @@
    strTemp.Format(_T("Notch\\Notch_%d_Defect_ProcBinImage"), nNotchIdx);
    SaveDebugImage(emDim, stFrame, pProcBinImage, strTemp);
    #if    MINI_LED == TRUE
    cvDilate(pMaskImage, pMaskImage1, 0, pNotchParam->m_nNotch_Inspect_Defect_dilate);
    strTemp.Format(_T("Notch\\Notch_%d_Defect_pMaskImage2"), nNotchIdx);
    SaveDebugImage(emDim, stFrame, pMaskImage1, strTemp);
        cvAnd(pMaskImage1, pProcBinImage, pMaskImage1);
        strTemp.Format(_T("Notch\\Notch_%d_Defect_pMaskImage3"), nNotchIdx);
        SaveDebugImage(emDim, stFrame, pMaskImage1, strTemp);
    #endif
#if    MINI_LED == 0
    cvDilate(pMaskImage, pDilatedMaskImage, 0, pNotchParam->m_nNotch_Inspect_Defect_dilate);
    strTemp.Format(_T("Notch\\Notch_%d_Defect_pMaskImage2"), nNotchIdx);
    SaveDebugImage(emDim, stFrame, pDilatedMaskImage, strTemp);
    cvAnd(pDilatedMaskImage, pProcBinImage, pDilatedMaskImage);
    strTemp.Format(_T("Notch\\Notch_%d_Defect_pMaskImage3"), nNotchIdx);
    SaveDebugImage(emDim, stFrame, pDilatedMaskImage, strTemp);
#endif
    // 3. Blob
    int iScan = stFrame.nScanIdx;
    int iFrame = stFrame.nFrameIdx;
@@ -4432,11 +4433,11 @@
    DefectLocation defectLoc = DefectLoc_Notch_Crack;
    std::vector<CDefect_Info> vecDefectCandidateList;
    if (MINI_LED == TRUE)
        DefectProcess(emDim, iScan, iFrame, pProcImage, pMaskImage1, rtProcessArea, nMinSize, nMinSize_X, nMinSize_Y, nDilation, bStartNearFilterUse, nStartNearFilterRange, defectLoc, &vecDefectCandidateList);
    else
#if    MINI_LED == 0
        DefectProcess(emDim, iScan, iFrame, pProcImage, pDilatedMaskImage, rtProcessArea, nMinSize, nMinSize_X, nMinSize_Y, nDilation, bStartNearFilterUse, nStartNearFilterRange, defectLoc, &vecDefectCandidateList);
#else
        DefectProcess(emDim, iScan, iFrame, pProcImage, pProcBinImage, rtProcessArea, nMinSize, nMinSize_X, nMinSize_Y, nDilation, bStartNearFilterUse, nStartNearFilterRange, defectLoc, &vecDefectCandidateList);
#endif
    
    m_pDefectControl->ExtractDefect_Notch(emDim, m_iCamera, stFrame.nScanIdx, nNotchIdx, &vecDefectCandidateList);