|
|
|
|
@ -3889,9 +3889,26 @@ int ImgCheckAnalysisy::Edge_Det()
|
|
|
|
|
// cv::Mat temMask = cv::Mat::zeros(m_TemCheck.temImgList[TEM_IMG_IDX_AImask].size(), CV_8UC1);
|
|
|
|
|
if (m_pFuntion->function.f_dege_Det.bOpen)
|
|
|
|
|
{
|
|
|
|
|
// 弱线检测(512模型)的mask:与主检测mask一样,根据 f_dege_Det 参数合并边缘检测结果
|
|
|
|
|
cv::Mat *pRLineDetMask = nullptr;
|
|
|
|
|
if (m_pFuntion->function.f_RLineDet.bOpen &&
|
|
|
|
|
m_pFuntion->function.f_RLineDet.bOpen_512 &&
|
|
|
|
|
m_pImageAllResult->RLine_512_DetAIResult &&
|
|
|
|
|
!m_pImageAllResult->RLine_512_DetAIResult->AI_MaskImg.empty())
|
|
|
|
|
{
|
|
|
|
|
pRLineDetMask = &m_pImageAllResult->RLine_512_DetAIResult->AI_MaskImg;
|
|
|
|
|
m_pdetlog->AddCheckstr(PrintLevel_1, DET_LOG_LEVEL_3, strBaseLog, " RLine_512 mask merge enable");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (m_pFuntion->function.f_dege_Det.bdetUse)
|
|
|
|
|
{
|
|
|
|
|
m_AIEdge_QX_Det.Detect(m_CheckResult_shareP->in_shareImage->img, m_pImageAllResult->qx_DetAIResult->AI_MaskImg, &detconfig, m_pdetlog);
|
|
|
|
|
m_AIEdge_QX_Det.Detect(m_CheckResult_shareP->in_shareImage->img, m_pImageAllResult->qx_DetAIResult->AI_MaskImg, &detconfig, m_pdetlog, pRLineDetMask);
|
|
|
|
|
|
|
|
|
|
// 合并后刷新弱线mask的blob行标记,保证合并进来的像素参与blob分析
|
|
|
|
|
if (pRLineDetMask != nullptr)
|
|
|
|
|
{
|
|
|
|
|
UpdateBlobHFlag_RLine_512();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
@ -3909,6 +3926,50 @@ int ImgCheckAnalysisy::Edge_Det()
|
|
|
|
|
return 0;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 弱线检测mask合并边缘检测结果后,刷新blob行标记,保证合并进来的像素参与blob分析
|
|
|
|
|
int ImgCheckAnalysisy::UpdateBlobHFlag_RLine_512()
|
|
|
|
|
{
|
|
|
|
|
std::shared_ptr<ImageAllResult::Image_AI_Det_Result> pDetAIResult = m_pImageAllResult->RLine_512_DetAIResult;
|
|
|
|
|
if (!pDetAIResult || !pDetAIResult->blobDetParam)
|
|
|
|
|
{
|
|
|
|
|
return 1;
|
|
|
|
|
}
|
|
|
|
|
unsigned char *imgBlobHFlagData = pDetAIResult->blobDetParam->imgBlobHFlagData;
|
|
|
|
|
cv::Mat maskimg = pDetAIResult->AI_MaskImg;
|
|
|
|
|
if (imgBlobHFlagData == NULL || maskimg.empty())
|
|
|
|
|
{
|
|
|
|
|
return 1;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
int nRows = pDetAIResult->blobDetParam->ndatalen;
|
|
|
|
|
if (nRows > maskimg.rows)
|
|
|
|
|
{
|
|
|
|
|
nRows = maskimg.rows;
|
|
|
|
|
}
|
|
|
|
|
int width = maskimg.cols;
|
|
|
|
|
int nSetNum = 0;
|
|
|
|
|
for (int y = 0; y < nRows; y++)
|
|
|
|
|
{
|
|
|
|
|
if (imgBlobHFlagData[y] != 0)
|
|
|
|
|
{
|
|
|
|
|
continue;
|
|
|
|
|
}
|
|
|
|
|
const unsigned char *p = maskimg.ptr<unsigned char>(y);
|
|
|
|
|
for (int x = 0; x < width; x++)
|
|
|
|
|
{
|
|
|
|
|
if (p[x] != 0)
|
|
|
|
|
{
|
|
|
|
|
imgBlobHFlagData[y] = 1;
|
|
|
|
|
nSetNum++;
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
m_pdetlog->AddCheckstr(PrintLevel_1, DET_LOG_LEVEL_3, "UpdateBlobHFlag_RLine_512", " RLine_512 blob HFlag update rows %d", nSetNum);
|
|
|
|
|
|
|
|
|
|
return 0;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
int ImgCheckAnalysisy::DrawResult_Step_1()
|
|
|
|
|
{
|
|
|
|
|
m_pdetlog->AddCheckstr(PrintLevel_0, "DrawResult_Step_1", "=======start");
|
|
|
|
|
|