吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1493|回复: 3
收起左侧

C#XY坐标排序问题

[复制链接]
吱吱克里斯 发表于 2019-12-20 10:17
50吾爱币
本帖最后由 吱吱克里斯 于 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;
    }
  }

在排序时始终排不到想要的效果
微信截图_20191220101622.png
求大神解答一下

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

小丶_明 发表于 2019-12-20 17:09
lz解决了,代码给我一份看看如何
陈总ing丶 发表于 2019-12-21 16:32
 楼主| 吱吱克里斯 发表于 2019-12-24 08:49
陈总ing丶 发表于 2019-12-21 16:32
这个我公司刚好有。VisionPro+C#脚本,五相机。

我只是排序出了点问题,其他的我都写好了
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - 52pojie.cn ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2026-5-30 01:16

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表