【halcon】小技巧,Union1能省时

背景:

        使用halcon时,修改以一下步骤,发现耗时激增2秒。

定义到关键代码如下:

//再和之前的选择区域取交集
HOperatorSet.Intersection(SelectedRegions0, SelectedRegions, out ho_CutLineRegion);

DebugShow(ho_CutLineRegion, "red", false, false);

发现主要是DebugShow这个函数耗时,但是之前并没有发现它耗时。它只是一个显示而已。

public void DebugShow(HObject targetRegions, string color = "red", bool bmargin = false, bool bStop = true)
{
    if (bmargin)
    {
        HOperatorSet.SetDraw(hSmart.HalconWindow, "margin");
    }
    else
    {
        HOperatorSet.SetDraw(hSmart.HalconWindow, "fill");
    }
    HOperatorSet.SetColor(hSmart?.HalconWindow, color);
    hSmart?.HalconWindow.DispObj(targetRegions);

    if (bStop)
    { 
        MessageBox.Show("");
    }
}

最后发现,是因为ho_CutLineRegion这个变量它包含了几百个对象,才导致显示耗时。

于是我修改代码如下(将 ho_CutLineRegion 联合一下 然后再显示):

//再和之前的选择区域取交集
HOperatorSet.Intersection(SelectedRegions0, SelectedRegions, out ho_CutLineRegion);

//Unionl之后,不管是显示,而是其他操作,会更加节省时间!
HOperatorSet.Union1(ho_CutLineRegion, out ho_CutLineRegion);

DebugShow(ho_CutLineRegion, "red", false, false);

激增的2秒耗时就没了!

后来我发现,不仅仅是显示,其他操作也存在这种情况,比如面积相减,选Union1也会更加省时!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

code bean

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值