|
|
|
@ -2371,6 +2371,26 @@ int ImgCheckAnalysisy::DrawResult_Step_1()
|
|
|
|
float fs_resize_x = m_pImageAllResult->resultImg.cols * 1.0f / m_pImageAllResult->detImg.cols;
|
|
|
|
float fs_resize_x = m_pImageAllResult->resultImg.cols * 1.0f / m_pImageAllResult->detImg.cols;
|
|
|
|
float fs_resize_y = m_pImageAllResult->resultImg.rows * 1.0f / m_pImageAllResult->detImg.rows;
|
|
|
|
float fs_resize_y = m_pImageAllResult->resultImg.rows * 1.0f / m_pImageAllResult->detImg.rows;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 绘制产品旋转外接矩形(m_rot_cur_roi, 原图坐标)的四个角点:黄色、半径 2 pix
|
|
|
|
|
|
|
|
if (m_bRotCurRoiValid && !m_CheckResult_shareP->resultimg.empty())
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
cv::Point2f rot_vertices[4];
|
|
|
|
|
|
|
|
m_rot_cur_roi.points(rot_vertices);
|
|
|
|
|
|
|
|
for (int i = 0; i < 4; i++)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
// 原图坐标 -> 检测图坐标(减去裁剪偏移) -> 结果图坐标(缩放)
|
|
|
|
|
|
|
|
cv::Point p;
|
|
|
|
|
|
|
|
p.x = cvRound((rot_vertices[i].x - m_Crop_Roi_paramImg.x) * fs_resize_x);
|
|
|
|
|
|
|
|
p.y = cvRound((rot_vertices[i].y - m_Crop_Roi_paramImg.y) * fs_resize_y);
|
|
|
|
|
|
|
|
cv::circle(m_CheckResult_shareP->resultimg, p, 2, cv::Scalar(0, 255, 255), cv::FILLED);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
m_pdetlog->AddCheckstr(PrintLevel_1, DET_LOG_LEVEL_3, "DrawResult", "rot ROi corners (%d,%d) (%d,%d) (%d,%d) (%d,%d) -> show",
|
|
|
|
|
|
|
|
cvRound(rot_vertices[0].x), cvRound(rot_vertices[0].y),
|
|
|
|
|
|
|
|
cvRound(rot_vertices[1].x), cvRound(rot_vertices[1].y),
|
|
|
|
|
|
|
|
cvRound(rot_vertices[2].x), cvRound(rot_vertices[2].y),
|
|
|
|
|
|
|
|
cvRound(rot_vertices[3].x), cvRound(rot_vertices[3].y));
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// 要绘制结果
|
|
|
|
// 要绘制结果
|
|
|
|
if (m_pbaseCheckFunction && m_pbaseCheckFunction->edgeDet.bDrawResult)
|
|
|
|
if (m_pbaseCheckFunction && m_pbaseCheckFunction->edgeDet.bDrawResult)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
@ -2782,6 +2802,20 @@ int ImgCheckAnalysisy::CalProductSize()
|
|
|
|
|
|
|
|
|
|
|
|
m_pdetlog->AddCheckstr(PrintLevel_1, "Det ROI", " [x%d, y%d, w %d,h %d] (piexl) -> [w %f h %f](mm),scale %f %f",
|
|
|
|
m_pdetlog->AddCheckstr(PrintLevel_1, "Det ROI", " [x%d, y%d, w %d,h %d] (piexl) -> [w %f h %f](mm),scale %f %f",
|
|
|
|
m_CutRoi.x, m_CutRoi.y, m_CutRoi.width, m_CutRoi.height, fw, fh, m_fImgage_Scale_X, m_fImgage_Scale_Y);
|
|
|
|
m_CutRoi.x, m_CutRoi.y, m_CutRoi.width, m_CutRoi.height, fw, fh, m_fImgage_Scale_X, m_fImgage_Scale_Y);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 打印产品旋转矩形的四角坐标(原图坐标系),便于核对尺寸换算与后续坐标映射
|
|
|
|
|
|
|
|
if (m_bRotCurRoiValid)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
cv::Point2f rot_vertices[4];
|
|
|
|
|
|
|
|
m_rot_cur_roi.points(rot_vertices);
|
|
|
|
|
|
|
|
m_pdetlog->AddCheckstr(PrintLevel_1, "Det ROI", " rot_cur_roi center (%f,%f) size (%f,%f) angle %f corners (%f,%f) (%f,%f) (%f,%f) (%f,%f)",
|
|
|
|
|
|
|
|
m_rot_cur_roi.center.x, m_rot_cur_roi.center.y,
|
|
|
|
|
|
|
|
m_rot_cur_roi.size.width, m_rot_cur_roi.size.height, m_rot_cur_roi.angle,
|
|
|
|
|
|
|
|
rot_vertices[0].x, rot_vertices[0].y,
|
|
|
|
|
|
|
|
rot_vertices[1].x, rot_vertices[1].y,
|
|
|
|
|
|
|
|
rot_vertices[2].x, rot_vertices[2].y,
|
|
|
|
|
|
|
|
rot_vertices[3].x, rot_vertices[3].y);
|
|
|
|
|
|
|
|
}
|
|
|
|
return 0;
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|