#include "RecoatCheckCfg.h" #include "BaseConfig.h" RecoatCheckCfg::RecoatCheckCfg() { m_Enable = false; m_MaskTopLeftX = 0; m_MaskTopLeftY = 0; m_MaskTopRightX = 500; m_MaskTopRightY = 0; m_MaskBottomLeftX = 0; m_MaskBottomLeftY = 500; m_MaskBottomRightX = 500; m_MaskBottomRightY = 500; m_TransformTopLeftX = -40; m_TransformTopLeftY = 40; m_TransformTopRightX = 40; m_TransformTopRightY = 40; m_TransformBottomLeftX = -40; m_TransformBottomLeftY = -40; m_TransformBottomRightX = 40; m_TransformBottomRightY = -40; // 每个岛包含的未铺粉区域数目的阈值 m_PerIslandCntThreshold = 10; // 单个未铺粉区域的面积阈值等于以层厚为半径的圆的面积乘以m_AreaThresholdFactor m_AreaThresholdFactor = 1.0f; // 单个未铺粉区域的轮廓长度阈值等于层厚乘以m_LengthThresholdFactor m_LengthThresholdFactor = 10.0f; // 重新铺粉尝试次数 m_RetryTimes = 3; // 图像二值化阈值 m_BinaryThreshold = 96; m_CheckOnPowderTest = false; m_CheckType = WHOLE_PERCENTAGE; m_UncoverPercentage = 20.0; m_IsUpPartNotLight = true; m_ImageScale = 5; m_GrayOffset = 10; } RecoatCheckCfg::~RecoatCheckCfg() { } void RecoatCheckCfg::GetUpdateSql(vector& ups) { char buffer[512]; sprintf_s(buffer, sizeof(buffer), "UPDATE %s set %s=", BaseConfig::TABLE_NAME.c_str(), BaseConfig::FIELD_CONFIG_VALUE.c_str() ); string strhead(buffer); sprintf_s(buffer, sizeof(buffer), " WHERE %s='%s' AND %s=", BaseConfig::FIELD_CONFIG_NAME.c_str(), RecoatCheckCfg::CONFIG_NAME.c_str(), BaseConfig::FIELD_CONFIG_CODE.c_str() ); string strtail(buffer); sprintf_s(buffer, sizeof(buffer), "%s'%s'%s'%s'", strhead.c_str(), to_string(m_Enable).c_str(), strtail.c_str(), RecoatCheckCfg::FIELD_ENABLE.c_str()); ups.push_back(buffer); sprintf_s(buffer, sizeof(buffer), "%s'%s'%s'%s'", strhead.c_str(), to_string(m_MaskTopLeftX).c_str(), strtail.c_str(), RecoatCheckCfg::FIELD_MASK_TOP_LEFT_X.c_str()); ups.push_back(buffer); sprintf_s(buffer, sizeof(buffer), "%s'%s'%s'%s'", strhead.c_str(), to_string(m_MaskTopLeftY).c_str(), strtail.c_str(), RecoatCheckCfg::FIELD_MASK_TOP_LEFT_Y.c_str()); ups.push_back(buffer); sprintf_s(buffer, sizeof(buffer), "%s'%s'%s'%s'", strhead.c_str(), to_string(m_MaskTopRightX).c_str(), strtail.c_str(), RecoatCheckCfg::FIELD_MASK_TOP_RIGHT_X.c_str()); ups.push_back(buffer); sprintf_s(buffer, sizeof(buffer), "%s'%s'%s'%s'", strhead.c_str(), to_string(m_MaskTopRightY).c_str(), strtail.c_str(), RecoatCheckCfg::FIELD_MASK_TOP_RIGHT_Y.c_str()); ups.push_back(buffer); sprintf_s(buffer, sizeof(buffer), "%s'%s'%s'%s'", strhead.c_str(), to_string(m_MaskBottomLeftX).c_str(), strtail.c_str(), RecoatCheckCfg::FIELD_MASK_BOTTOM_LEFT_X.c_str()); ups.push_back(buffer); sprintf_s(buffer, sizeof(buffer), "%s'%s'%s'%s'", strhead.c_str(), to_string(m_MaskBottomLeftY).c_str(), strtail.c_str(), RecoatCheckCfg::FIELD_MASK_BOTTOM_LEFT_Y.c_str()); ups.push_back(buffer); sprintf_s(buffer, sizeof(buffer), "%s'%s'%s'%s'", strhead.c_str(), to_string(m_MaskBottomRightX).c_str(), strtail.c_str(), RecoatCheckCfg::FIELD_MASK_BOTTOM_RIGHT_X.c_str()); ups.push_back(buffer); sprintf_s(buffer, sizeof(buffer), "%s'%s'%s'%s'", strhead.c_str(), to_string(m_MaskBottomRightY).c_str(), strtail.c_str(), RecoatCheckCfg::FIELD_MASK_BOTTOM_RIGHT_Y.c_str()); ups.push_back(buffer); sprintf_s(buffer, sizeof(buffer), "%s'%s'%s'%s'", strhead.c_str(), to_string(m_TransformTopLeftX).c_str(), strtail.c_str(), RecoatCheckCfg::FIELD_TRANSFORM_TOP_LEFT_X.c_str()); ups.push_back(buffer); sprintf_s(buffer, sizeof(buffer), "%s'%s'%s'%s'", strhead.c_str(), to_string(m_TransformTopLeftY).c_str(), strtail.c_str(), RecoatCheckCfg::FIELD_TRANSFORM_TOP_LEFT_Y.c_str()); ups.push_back(buffer); sprintf_s(buffer, sizeof(buffer), "%s'%s'%s'%s'", strhead.c_str(), to_string(m_TransformTopRightX).c_str(), strtail.c_str(), RecoatCheckCfg::FIELD_TRANSFORM_TOP_RIGHT_X.c_str()); ups.push_back(buffer); sprintf_s(buffer, sizeof(buffer), "%s'%s'%s'%s'", strhead.c_str(), to_string(m_TransformTopRightY).c_str(), strtail.c_str(), RecoatCheckCfg::FIELD_TRANSFORM_TOP_RIGHT_Y.c_str()); ups.push_back(buffer); sprintf_s(buffer, sizeof(buffer), "%s'%s'%s'%s'", strhead.c_str(), to_string(m_TransformBottomLeftX).c_str(), strtail.c_str(), RecoatCheckCfg::FIELD_TRANSFORM_BOTTOM_LEFT_X.c_str()); ups.push_back(buffer); sprintf_s(buffer, sizeof(buffer), "%s'%s'%s'%s'", strhead.c_str(), to_string(m_TransformBottomLeftY).c_str(), strtail.c_str(), RecoatCheckCfg::FIELD_TRANSFORM_BOTTOM_LEFT_Y.c_str()); ups.push_back(buffer); sprintf_s(buffer, sizeof(buffer), "%s'%s'%s'%s'", strhead.c_str(), to_string(m_TransformBottomRightX).c_str(), strtail.c_str(), RecoatCheckCfg::FIELD_TRANSFORM_BOTTOM_RIGHT_X.c_str()); ups.push_back(buffer); sprintf_s(buffer, sizeof(buffer), "%s'%s'%s'%s'", strhead.c_str(), to_string(m_TransformBottomRightY).c_str(), strtail.c_str(), RecoatCheckCfg::FIELD_TRANSFORM_BOTTOM_RIGHT_Y.c_str()); ups.push_back(buffer); sprintf_s(buffer, sizeof(buffer), "%s'%s'%s'%s'", strhead.c_str(), to_string(m_PerIslandCntThreshold).c_str(), strtail.c_str(), RecoatCheckCfg::FIELD_ISLAND_THRESHOLD.c_str()); ups.push_back(buffer); sprintf_s(buffer, sizeof(buffer), "%s'%s'%s'%s'", strhead.c_str(), to_string(m_AreaThresholdFactor).c_str(), strtail.c_str(), RecoatCheckCfg::FIELD_AREA_FACTOR.c_str()); ups.push_back(buffer); sprintf_s(buffer, sizeof(buffer), "%s'%s'%s'%s'", strhead.c_str(), to_string(m_LengthThresholdFactor).c_str(), strtail.c_str(), RecoatCheckCfg::FIELD_LENGTH_FACTOR.c_str()); ups.push_back(buffer); sprintf_s(buffer, sizeof(buffer), "%s'%s'%s'%s'", strhead.c_str(), to_string(m_RetryTimes).c_str(), strtail.c_str(), RecoatCheckCfg::FIELD_RETRY_TIMES.c_str()); ups.push_back(buffer); sprintf_s(buffer, sizeof(buffer), "%s'%s'%s'%s'", strhead.c_str(), to_string(m_BinaryThreshold).c_str(), strtail.c_str(), RecoatCheckCfg::FIELD_BINARY_THRESHOLD.c_str()); ups.push_back(buffer); sprintf_s(buffer, sizeof(buffer), "%s'%s'%s'%s'", strhead.c_str(), to_string(m_CheckOnPowderTest).c_str(), strtail.c_str(), RecoatCheckCfg::FIELD_CHECK_ON_POWDER_TEST.c_str()); ups.push_back(buffer); sprintf_s(buffer, sizeof(buffer), "%s'%s'%s'%s'", strhead.c_str(), to_string(m_CheckType).c_str(), strtail.c_str(), RecoatCheckCfg::FIELD_CHECK_TYPE.c_str()); ups.push_back(buffer); sprintf_s(buffer, sizeof(buffer), "%s'%s'%s'%s'", strhead.c_str(), to_string(m_UncoverPercentage).c_str(), strtail.c_str(), RecoatCheckCfg::FIELD_UNCOVER_PERCENTAGE.c_str()); ups.push_back(buffer); sprintf_s(buffer, sizeof(buffer), "%s'%s'%s'%s'", strhead.c_str(), m_IsUpPartNotLight ? "1" : "0", strtail.c_str(), RecoatCheckCfg::FIELD_IS_UP_PART_NOT_LIGHT.c_str()); ups.push_back(buffer); sprintf_s(buffer, sizeof(buffer), "%s'%s'%s'%s'", strhead.c_str(), to_string(m_ImageScale).c_str(), strtail.c_str(), RecoatCheckCfg::FIELD_IMAGE_SCALE.c_str()); ups.push_back(buffer); sprintf_s(buffer, sizeof(buffer), "%s'%s'%s'%s'", strhead.c_str(), to_string(m_GrayOffset).c_str(), strtail.c_str(), RecoatCheckCfg::FIELD_GRAY_OFFSET.c_str()); ups.push_back(buffer); } string RecoatCheckCfg::CONFIG_NAME = "RecoatCheck"; string RecoatCheckCfg::FIELD_ENABLE = "Enable"; string RecoatCheckCfg::FIELD_MASK_TOP_LEFT_X = "MaskTopLeftX"; string RecoatCheckCfg::FIELD_MASK_TOP_LEFT_Y = "MaskTopLeftY"; string RecoatCheckCfg::FIELD_MASK_TOP_RIGHT_X = "MaskTopRightX"; string RecoatCheckCfg::FIELD_MASK_TOP_RIGHT_Y = "MaskTopRightY"; string RecoatCheckCfg::FIELD_MASK_BOTTOM_LEFT_X = "MaskBottomLeftX"; string RecoatCheckCfg::FIELD_MASK_BOTTOM_LEFT_Y = "MaskBottomLeftY"; string RecoatCheckCfg::FIELD_MASK_BOTTOM_RIGHT_X = "MaskBottomRightX"; string RecoatCheckCfg::FIELD_MASK_BOTTOM_RIGHT_Y = "MaskBottomRightY"; string RecoatCheckCfg::FIELD_TRANSFORM_TOP_LEFT_X = "TransformTopLeftX"; string RecoatCheckCfg::FIELD_TRANSFORM_TOP_LEFT_Y = "TransformTopLeftY"; string RecoatCheckCfg::FIELD_TRANSFORM_TOP_RIGHT_X = "TransformTopRightX"; string RecoatCheckCfg::FIELD_TRANSFORM_TOP_RIGHT_Y = "TransformTopRightY"; string RecoatCheckCfg::FIELD_TRANSFORM_BOTTOM_LEFT_X = "TransformBottomLeftX"; string RecoatCheckCfg::FIELD_TRANSFORM_BOTTOM_LEFT_Y = "TransformBottomLeftY"; string RecoatCheckCfg::FIELD_TRANSFORM_BOTTOM_RIGHT_X = "TransformBottomRightX"; string RecoatCheckCfg::FIELD_TRANSFORM_BOTTOM_RIGHT_Y = "TransformBottomRightY"; string RecoatCheckCfg::FIELD_ISLAND_THRESHOLD = "IslandThreshold"; string RecoatCheckCfg::FIELD_AREA_FACTOR = "AreaFactor"; string RecoatCheckCfg::FIELD_LENGTH_FACTOR = "LengthFactor"; string RecoatCheckCfg::FIELD_RETRY_TIMES = "RetryTimes"; string RecoatCheckCfg::FIELD_BINARY_THRESHOLD = "BinaryThreshold"; string RecoatCheckCfg::FIELD_CHECK_ON_POWDER_TEST = "CheckOnPowderTest"; string RecoatCheckCfg::FIELD_CHECK_TYPE = "CheckType"; string RecoatCheckCfg::FIELD_UNCOVER_PERCENTAGE = "Uncocer_percentage"; string RecoatCheckCfg::FIELD_IS_UP_PART_NOT_LIGHT = "IsUpPartNotLight"; string RecoatCheckCfg::FIELD_IMAGE_SCALE = "ImageScale"; string RecoatCheckCfg::FIELD_GRAY_OFFSET = "GrayOffset";