添加vector空检查
This commit is contained in:
parent
90840cb696
commit
ec210c520d
@ -413,6 +413,11 @@ SSX_BQworkpieceResult sx_BQ_getWorkpieceCorners(
|
|||||||
_getEdgeLinkingContour(&v_trees[idx0], true, firstPt, region[0].edgeLink_1, scanLines, true, workpieceParam.lineLen);
|
_getEdgeLinkingContour(&v_trees[idx0], true, firstPt, region[0].edgeLink_1, scanLines, true, workpieceParam.lineLen);
|
||||||
int idx1 = _getPointClosestContour(v_trees, true, lastPt, scanLines, true);
|
int idx1 = _getPointClosestContour(v_trees, true, lastPt, scanLines, true);
|
||||||
_getEdgeLinkingContour(&v_trees[idx1], true, lastPt, region[0].edgeLink_2, scanLines, true, workpieceParam.lineLen);
|
_getEdgeLinkingContour(&v_trees[idx1], true, lastPt, region[0].edgeLink_2, scanLines, true, workpieceParam.lineLen);
|
||||||
|
if ((region[0].edgeLink_1.size() < 5) || (region[0].edgeLink_2.size() < 5))
|
||||||
|
{
|
||||||
|
*errCode = SX_ERR_INVLD_EDGE_LINK_NUM;
|
||||||
|
return workpieceCorners;
|
||||||
|
}
|
||||||
|
|
||||||
region[1].rgnIdx = 1; //Top
|
region[1].rgnIdx = 1; //Top
|
||||||
_getEdgeContour(&v_trees[vTree_T], region[1].edge, scanLines, true);
|
_getEdgeContour(&v_trees[vTree_T], region[1].edge, scanLines, true);
|
||||||
@ -423,7 +428,11 @@ SSX_BQworkpieceResult sx_BQ_getWorkpieceCorners(
|
|||||||
_getEdgeLinkingContour(&h_trees[idx0], false, firstPt, region[1].edgeLink_1, scanLines, true, workpieceParam.lineLen);
|
_getEdgeLinkingContour(&h_trees[idx0], false, firstPt, region[1].edgeLink_1, scanLines, true, workpieceParam.lineLen);
|
||||||
idx1 = _getPointClosestContour(h_trees, false, lastPt, scanLines, true);
|
idx1 = _getPointClosestContour(h_trees, false, lastPt, scanLines, true);
|
||||||
_getEdgeLinkingContour(&h_trees[idx1], false, lastPt, region[1].edgeLink_2, scanLines, true, workpieceParam.lineLen);
|
_getEdgeLinkingContour(&h_trees[idx1], false, lastPt, region[1].edgeLink_2, scanLines, true, workpieceParam.lineLen);
|
||||||
|
if ((region[1].edgeLink_1.size() < 5) || (region[1].edgeLink_2.size() < 5))
|
||||||
|
{
|
||||||
|
*errCode = SX_ERR_INVLD_EDGE_LINK_NUM;
|
||||||
|
return workpieceCorners;
|
||||||
|
}
|
||||||
region[2].rgnIdx = 2; //Right
|
region[2].rgnIdx = 2; //Right
|
||||||
_getEdgeContour(&h_trees[hTree_R], region[2].edge, scanLines, false);
|
_getEdgeContour(&h_trees[hTree_R], region[2].edge, scanLines, false);
|
||||||
//寻找对应的两边
|
//寻找对应的两边
|
||||||
@ -433,7 +442,11 @@ SSX_BQworkpieceResult sx_BQ_getWorkpieceCorners(
|
|||||||
_getEdgeLinkingContour(&v_trees[idx0], true, firstPt, region[2].edgeLink_1, scanLines, false, workpieceParam.lineLen);
|
_getEdgeLinkingContour(&v_trees[idx0], true, firstPt, region[2].edgeLink_1, scanLines, false, workpieceParam.lineLen);
|
||||||
idx1 = _getPointClosestContour(v_trees, true, lastPt, scanLines, false);
|
idx1 = _getPointClosestContour(v_trees, true, lastPt, scanLines, false);
|
||||||
_getEdgeLinkingContour(&v_trees[idx1], true, lastPt, region[2].edgeLink_2, scanLines, false, workpieceParam.lineLen);
|
_getEdgeLinkingContour(&v_trees[idx1], true, lastPt, region[2].edgeLink_2, scanLines, false, workpieceParam.lineLen);
|
||||||
|
if ((region[2].edgeLink_1.size() < 5) || (region[2].edgeLink_2.size() < 5))
|
||||||
|
{
|
||||||
|
*errCode = SX_ERR_INVLD_EDGE_LINK_NUM;
|
||||||
|
return workpieceCorners;
|
||||||
|
}
|
||||||
region[3].rgnIdx = 3; //Bottom
|
region[3].rgnIdx = 3; //Bottom
|
||||||
_getEdgeContour(&v_trees[vTree_B], region[3].edge, scanLines, true);
|
_getEdgeContour(&v_trees[vTree_B], region[3].edge, scanLines, true);
|
||||||
//寻找对应的两边
|
//寻找对应的两边
|
||||||
@ -443,6 +456,11 @@ SSX_BQworkpieceResult sx_BQ_getWorkpieceCorners(
|
|||||||
_getEdgeLinkingContour(&h_trees[idx0], false, firstPt, region[3].edgeLink_1, scanLines, false, workpieceParam.lineLen);
|
_getEdgeLinkingContour(&h_trees[idx0], false, firstPt, region[3].edgeLink_1, scanLines, false, workpieceParam.lineLen);
|
||||||
idx1 = _getPointClosestContour(h_trees, false, lastPt, scanLines, true);
|
idx1 = _getPointClosestContour(h_trees, false, lastPt, scanLines, true);
|
||||||
_getEdgeLinkingContour(&h_trees[idx1], false, lastPt, region[3].edgeLink_2, scanLines, false, workpieceParam.lineLen);
|
_getEdgeLinkingContour(&h_trees[idx1], false, lastPt, region[3].edgeLink_2, scanLines, false, workpieceParam.lineLen);
|
||||||
|
if ((region[3].edgeLink_1.size() < 5) || (region[3].edgeLink_2.size() < 5))
|
||||||
|
{
|
||||||
|
*errCode = SX_ERR_INVLD_EDGE_LINK_NUM;
|
||||||
|
return workpieceCorners;
|
||||||
|
}
|
||||||
|
|
||||||
for (int i = 0; i < 4; i++)
|
for (int i = 0; i < 4; i++)
|
||||||
{
|
{
|
||||||
|
|||||||
@ -10,3 +10,4 @@
|
|||||||
//BQ_workpiece
|
//BQ_workpiece
|
||||||
#define SX_ERR_INVLD_VTREE_NUM -2001
|
#define SX_ERR_INVLD_VTREE_NUM -2001
|
||||||
#define SX_ERR_INVLD_HTREE_NUM -2002
|
#define SX_ERR_INVLD_HTREE_NUM -2002
|
||||||
|
#define SX_ERR_INVLD_EDGE_LINK_NUM -2003
|
||||||
Loading…
x
Reference in New Issue
Block a user