基于HALCON的机器视觉开发,C或

北京白癜风治疗的专科医院 http://www.kstejiao.com/m/

大多数HALCON解决方案必须嵌入到主应用程序中(例如,提供图形用户界面),然后大多数机器视觉应用程序都是用c++或c#实现的。下面是我们关于下一个HALCON项目应该使用哪种主机语言的观点,供读者参考。

语言选择

编程语言的选择对于公司来说是一个战略和长期的决策。这很难在一篇文章中详细解释。我们将尽最大努力强调C++和C语言之间的差异。评估和最终决策必须由一个公司或其HalCon开发人员来执行。

如果您或您的HALCON视觉应用程序开发人员只熟悉其中一种语言,那么这种语言就是一个非常重要的论据。您可能需要有很充足的理由才能更改为其他语言。

支持HALCON

HALCON支持使用HALCON/C++和HALCON/.NET接口集成到C++和C#主应用程序中。在大多数情况下,HALCON脚本的性能是类似。

垃圾收集器/确定性销毁(RAII)

C++具有RAII模式和具有超出范围的对象的确定性行为。因此,我们可以从C++语言中保证每一个分配的HIMAN,例如在图像采集循环中,自动释放之后,不会有内存泄漏。在C#中,通常很难实现这种可靠性,并且通常需要手动和容易出错的工作,例如手动调用my..Destroy()或GCHandle.Free()。但是,如果出现异常、早期循环或函数退出(继续、返回),C#中的这些清理调用很容易被忽略。此外,通常无法确保垃圾收集器不在应用程序的性能关键部分中运行。

托管与本地

本机代码是由C++编译器生成的目标CPU的机器代码。它将进行高度优化,但这种优化在编译期间需要一些时间。因此,C++程序往往会增加构建时间,但最终应用程序的启动时间会快,尤其是快速处理性能。

相反,C#程序仅编译为中间字节码。这可以在构建期间相对快速地完成,但代码将不会像使用优秀的C++编译器那样进行优化。最终在运行时生成的机器代码将取决于目标系统,因此无法在开发人员的机器上进行分析。

作为现代C++编译器可以实现的示例,以下使用简单的C++代码来计算整数中的设置位数:

intcount_bits_1(inta){

intcount=0;

while(a){

count++;

a=(a-1);

}

returncount;

}

Thiscode


转载请注明:http://www.aierlanlan.com/rzfs/7037.html

  • 上一篇文章:
  •   
  • 下一篇文章: 没有了