@ -157,13 +157,6 @@ int CameraCheckAnalysisy::Detect_Pre()
}
}
long te = CheckUtil : : getcurTime ( ) ;
long te = CheckUtil : : getcurTime ( ) ;
m_pdetlog - > AddCheckstr ( PrintLevel_0 , " Detect_Pre " , " ==================End time %ld ms " , te - ts ) ;
m_pdetlog - > AddCheckstr ( PrintLevel_0 , " Detect_Pre " , " ==================End time %ld ms " , te - ts ) ;
re = preDet_BQ ( L255CutImg , L255 ) ;
if ( re ! = 0 )
{
m_pdetlog - > AddCheckstr ( PrintLevel_1 , " Detect_Pre " , " %s --preDet_BQ error " , strBasic . c_str ( ) ) ;
}
// getchar();
// getchar();
// return 1;
// return 1;
@ -571,40 +564,6 @@ int CameraCheckAnalysisy::Det_MarkLine(const cv::Mat &L255CutImg, std::shared_pt
return 0 ;
return 0 ;
}
}
int BQ_Det ( cv : : Mat detimg , shared_ptr < BQ_Result > pBQ_Result )
{
cv : : resize ( detimg , detimg , cv : : Size ( ) , 0.1 , 0.1 ) ;
cv : : Mat detimg_bin ;
cv : : GaussianBlur ( detimg , detimg , cv : : Size ( 3 , 3 ) , 0 ) ;
cv : : threshold ( detimg , detimg_bin , 25 , 255 , cv : : THRESH_BINARY_INV ) ;
vector < vector < Point > > contours ;
cv : : Rect result_roi ;
findContours ( detimg_bin , contours , RETR_EXTERNAL , CHAIN_APPROX_SIMPLE ) ;
// 找到最大轮廓
double max_area = 0 ;
int max_contour_index = 0 ;
for ( int i = 0 ; i < contours . size ( ) ; i + + )
{
double area = contourArea ( contours [ i ] ) ;
if ( area > max_area )
{
max_area = area ;
max_contour_index = i ;
}
}
if ( max_contour_index < 0 )
{
cerr < < " No contours found! " < < endl ;
return 7 ;
}
cv : : Rect r_rect = boundingRect ( contours [ max_contour_index ] ) ;
cv : : Rect rect ( r_rect . x * 10 , r_rect . y * 10 , r_rect . width * 10 , r_rect . height * 10 ) ;
if ( max_contour_index > = 0 )
{
pBQ_Result - > pBQ_roiList . push_back ( rect ) ;
}
return 0 ;
}
int CameraCheckAnalysisy : : preDet_ZF ( const cv : : Mat & L255CutImg , std : : shared_ptr < ImageAllResult > L255 )
int CameraCheckAnalysisy : : preDet_ZF ( const cv : : Mat & L255CutImg , std : : shared_ptr < ImageAllResult > L255 )
{
{
long ts = CheckUtil : : getcurTime ( ) ;
long ts = CheckUtil : : getcurTime ( ) ;
@ -678,65 +637,6 @@ int CameraCheckAnalysisy::preDet_ZF(const cv::Mat &L255CutImg, std::shared_ptr<I
m_pdetlog - > AddCheckstr ( PrintLevel_1 , " preDet_ZF " , " ==================End zf num %ld re = %d time %ld ms " , m_pCheck_Result - > cameraBaseResult - > pZF_Result - > pZF_roiList . size ( ) , re , te - ts ) ;
m_pdetlog - > AddCheckstr ( PrintLevel_1 , " preDet_ZF " , " ==================End zf num %ld re = %d time %ld ms " , m_pCheck_Result - > cameraBaseResult - > pZF_Result - > pZF_roiList . size ( ) , re , te - ts ) ;
return 0 ;
return 0 ;
}
}
int CameraCheckAnalysisy : : preDet_BQ ( const cv : : Mat & L255CutImg , std : : shared_ptr < ImageAllResult > L255 )
{
long ts = CheckUtil : : getcurTime ( ) ;
m_pCheck_Result - > cameraBaseResult - > pBQ_Result = std : : make_shared < BQ_Result > ( ) ;
m_pCheck_Result - > cameraBaseResult - > pBQ_Result - > bShield_BQ = m_AnalysisyConfig . commonCheckConfig . baseConfig . bShield_BQ ;
cv : : Rect Det_CropRoi = m_pCheck_Result - > cameraBaseResult - > pEdgeDetResult - > cutRoi ;
cv : : Mat detimg = L255CutImg ;
int re = BQ_Det ( detimg , m_pCheck_Result - > cameraBaseResult - > pBQ_Result ) ;
// 屏蔽标签
{
m_pdetlog - > AddCheckstr ( PrintLevel_2 , " preDet_BQ " , " shieldBQ is Open " ) ;
cv : : Mat detImg_mask = m_pCheck_Result - > cameraBaseResult - > pEdgeDetResult - > shieldMask ;
for ( int i = 0 ; i < m_pCheck_Result - > cameraBaseResult - > pBQ_Result - > pBQ_roiList . size ( ) ; i + + )
{
cv : : Rect boundingRect = m_pCheck_Result - > cameraBaseResult - > pBQ_Result - > pBQ_roiList . at ( i ) ;
boundingRect . x - = 50 ;
boundingRect . y - = 50 ;
boundingRect . width + = 100 ;
boundingRect . height + = 100 ;
if ( CheckUtil : : JudgRect ( boundingRect , detimg . cols , detimg . rows ) )
detImg_mask ( boundingRect ) . setTo ( 255 ) ;
else
m_pdetlog - > AddCheckstr ( PrintLevel_2 , " preDet_BQ " , " detImg_mask fail !!! " ) ;
// cv::imwrite("BQ_sheildImg.png", m_pCheck_Result->cameraBaseResult->pEdgeDetResult->shieldMask);
}
if ( L255 - > result - > in_shareImage - > bDebugsaveImg )
{
// cv::imwrite("sheildImg.png", m_pCheck_Result->cameraBaseResult->pEdgeDetResult->shieldMask);
}
}
std : : shared_ptr < BQ_Result > pBQ_Result = m_pCheck_Result - > cameraBaseResult - > pBQ_Result ; // BQ 检测结果
pBQ_Result - > BQ_centerPoint . erase ( pBQ_Result - > BQ_centerPoint . begin ( ) , pBQ_Result - > BQ_centerPoint . end ( ) ) ;
for ( int i = 0 ; i < pBQ_Result - > pBQ_roiList . size ( ) ; i + + )
{
// 获取当前轮廓的边界矩形
cv : : Rect boundingRect = pBQ_Result - > pBQ_roiList . at ( i ) ;
cv : : Point p ;
p . x = boundingRect . x + boundingRect . width * 0.5f ;
p . y = boundingRect . y + boundingRect . height * 0.5f ;
// printf("--- bq %d %d %d %d \n", boundingRect.x, boundingRect.y, boundingRect.width, boundingRect.height);
pBQ_Result - > BQ_centerPoint . push_back ( p ) ;
}
if ( L255 - > result - > in_shareImage - > bDebugsaveImg )
{
cv : : Mat showimg = detimg . clone ( ) ;
for ( int i = 0 ; i < m_pCheck_Result - > cameraBaseResult - > pBQ_Result - > pBQ_roiList . size ( ) ; i + + )
{
cv : : Rect boundingRect = m_pCheck_Result - > cameraBaseResult - > pBQ_Result - > pBQ_roiList . at ( i ) ;
cv : : rectangle ( showimg , boundingRect , cv : : Scalar ( 200 ) , 5 ) ;
}
cv : : imwrite ( " bq_result.png " , showimg ) ;
}
m_pCheck_Result - > cameraBaseResult - > pBQ_Result - > nresult = 0 ;
long te = CheckUtil : : getcurTime ( ) ;
m_pdetlog - > AddCheckstr ( PrintLevel_1 , " preDet_BQ " , " ==================End bq num %ld re = %d time %ld ms " , m_pCheck_Result - > cameraBaseResult - > pBQ_Result - > pBQ_roiList . size ( ) , re , te - ts ) ;
return 0 ;
}
int CameraCheckAnalysisy : : Init ( std : : string strcameraName )
int CameraCheckAnalysisy : : Init ( std : : string strcameraName )
{
{
m_strcameraName = strcameraName ;
m_strcameraName = strcameraName ;