| | |
| | | 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); |
| | |
| | | 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()); |
| | |
| | | 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; |
| | |
| | | { |
| | | 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; |
| | | } |
| | | } |
| | | |
| | |
| | | |
| | | 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; |
| | |
| | | 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); |
| | | |