本帖最后由 吱吱克里斯 于 2019-12-20 10:22 编辑
[C#] 纯文本查看 复制代码 for (int i = 0; i < mBlob.Results.GetBlobs().Count; i++)
{
CogPointMarker mpoint = new CogPointMarker();
mpoint.X = mBlob.Results.GetBlobs()[i].GetBoundingBox(CogBlobAxisConstants.SelectedSpace).CenterX;
mpoint.Y = mBlob.Results.GetBlobs()[i].GetBoundingBox(CogBlobAxisConstants.SelectedSpace).CenterY;
mList.Add(mpoint);
}
ArrayList n1 = new ArrayList();
n1 = SetSortPoint(mList);
ArrayList n = n1;
n = SetSortPointX(n, 0, 19);
n = SetSortPointX(n, 19, 38);
n = SetSortPointX(n, 38, 57);
n = SetSortPointX(n, 57, 75);
n = SetSortPointX(n, 75, 94);
n = SetSortPointX(n, 94, 101);
for (int i = 0; i < n.Count; i++)
{
//调用显示参数
panyz(((CogPointMarker) n[i]).X, ((CogPointMarker) n[i]).Y, 0, i.ToString());
}
for (int i = 0; i < mBlob.Results.GetBlobs().Count; i++)
//for (int i = 0; i < 10; i++)
{
CogRectangleAffine mRectangle = new CogRectangleAffine();
mRectangle = mBlob.Results.GetBlobs()[i].GetBoundingBox(CogBlobAxisConstants.SelectedSpace);
mRectangle.Color = CogColorConstants.Red;
mRectangle.LineStyle = CogGraphicLineStyleConstants.Solid;
mRectangle.LineWidthInScreenPixels = 3;
mRectangle.TipText = "李";
mGraphicCollection.Add(mRectangle);
mIPOneImage2.Region = mRectangle;
mIPOneImage2.Run();
//mPart.Inputs["InputImage"].Value = mIPOneImage2.OutputImage;
//mPart.Run();
}
return false;
}
catch(Exception ex)
{
MessageBox.Show(ex.StackTrace + ex.Message);
return false;
}
}
public ArrayList SetSortPoint(ArrayList arry)
{
int len = arry.Count;
for (int i = 0; i < len-1; i++)
{
for (int j = 0; j < len-1- i; j++)
{
if (SetSortRule((CogPointMarker)arry[j], (CogPointMarker)arry[j + 1]))
{
CogPointMarker tmp = (CogPointMarker)arry[j];
arry[j] = arry[j + 1];
arry[j + 1] = tmp;
}
}
}
return arry;
}
public ArrayList SetSortPointX(ArrayList arry, int a, int b)
{
int len = arry.Count;
for (int i = a; i < b - 1; i++)
{
for (int j = a; j < b - 1 - i; j++)
{
if (SetSortRuleX((CogPointMarker) arry[j], (CogPointMarker) arry[j + 1]))
{
CogPointMarker tmp = (CogPointMarker) arry[j];
arry[j] = arry[j + 1];
arry[j + 1] = tmp;
}
}
}
return arry;
}
public bool SetSortRuleX(CogPointMarker pt1, CogPointMarker pt2)
{
if (pt1.X > pt2.X)
{
return true;
}
else if (pt1.X == pt2.X)
{
return (pt1.Y > pt2.Y);
}
else
{
return false;
}
}
public bool SetSortRule(CogPointMarker p1, CogPointMarker p2)
{
if (p1.Y > p2.Y)
{
return true;
}
else if (p1.Y == p2.Y)
{
return (p1.X > p2.X);
}
else
{
return false;
}
}
在排序时始终排不到想要的效果
求大神解答一下 |