当前位置:   article > 正文

halcon联合C#的实时采集显示_c#联合halcon clone();

c#联合halcon clone();

第一步:做好halcon图像采集算法并将其导出为C#代码。
打开VS2019选择Windows窗体应用程序并设置命名工程名称与保存路径。如下图:

可以看到一个类似于白板的窗体(适当拖动窗体大小),接着添加应用,如下如

 

单击引用在右击添加引用,引用的路径为halcon安装目录下的bin->dotnet35下的halcondotnet.dll(动态链接库),若不知道在哪里,可回到桌面右击halcon图标查看文件所在位置,然后回到VS215单击浏览按钮做如下图操作:

 

 

做好添加引用,点击工具箱去添加显示halcon窗体的控件,如下图:

 

常规选项在工具箱的最后面,右击常规单击选择项,弹出如下图的窗口:

 

单击浏览选择上一步路径下的halcondotnet.dll(动态链接库),确定后若出现如下图的内容说明添加成功,然后点击确认即可。

 

现在常规下面出现以下两个选项,如下图:

 

这里单击第二个且按住放到白板上,如下图:

 

这样关于联合halcon的界面内容就做完了,接下来就是布置界面,如下图:

 

  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Data;
  5. using System.Drawing;
  6. using System.Text;
  7. using System.Windows.Forms;
  8. using DevExpress.XtraBars;
  9. using DevExpress.XtraBars.Ribbon;
  10. using DevExpress.XtraBars.Helpers;
  11. using DevExpress.Skins;
  12. using DevExpress.LookAndFeel;
  13. using DevExpress.UserSkins;
  14. using HalconDotNet;
  15. namespace DefectDetection.View
  16. {
  17. public partial class Form1 : RibbonForm
  18. {
  19. public Form1()
  20. {
  21. InitializeComponent();
  22. InitSkinGallery();
  23. InitGrid();
  24. }
  25. void InitSkinGallery()
  26. {
  27. SkinHelper.InitSkinGallery(rgbiSkins, true);
  28. }
  29. BindingList<Person> gridDataList = new BindingList<Person>();
  30. void InitGrid()
  31. {
  32. gridDataList.Add(new Person("John", "Smith"));
  33. gridDataList.Add(new Person("Gabriel", "Smith"));
  34. gridDataList.Add(new Person("Ashley", "Smith", "some comment"));
  35. gridDataList.Add(new Person("Adrian", "Smith", "some comment"));
  36. gridDataList.Add(new Person("Gabriella", "Smith", "some comment"));
  37. //gridControl.DataSource = gridDataList;
  38. }
  39. //定义变量
  40. HObject ho_Image = null;
  41. // Local control variables
  42. HTuple hv_AcqHandle = new HTuple(), hv_WindowHandle = new HTuple();
  43. // Initialize local and output iconic variables
  44. HTuple hv_Width = new HTuple(), hv_Height = new HTuple();
  45. private void openCameraBtn_Click(object sender, EventArgs e)
  46. {
  47. //打开相机
  48. try
  49. {
  50. HOperatorSet.GenEmptyObj(out ho_Image);
  51. //Image Acquisition 01: Code generated by Image Acquisition 01
  52. HOperatorSet.OpenFramegrabber("DirectShow", 1, 1, 0, 0, 0, 0, "default", 8, "gray",
  53. -1, "false", "default", "[1] Microsoft? LifeCam HD-3000", 0, -1, out hv_AcqHandle);
  54. HOperatorSet.GrabImageStart(hv_AcqHandle, -1);
  55. if (HDevWindowStack.IsOpen())
  56. {
  57. HOperatorSet.CloseWindow(HDevWindowStack.Pop());
  58. }
  59. HOperatorSet.SetWindowAttr("background_color", "black");
  60. HOperatorSet.OpenWindow(0, 0, hWindowControl1.Width, hWindowControl1.Height, hWindowControl1.HalconWindow, "visible", "", out hv_WindowHandle);
  61. HDevWindowStack.Push(hv_WindowHandle);
  62. this.openCameraBtn.Enabled = false;
  63. this.collectionBtn.Enabled = true;
  64. this.closeCameraBtn.Enabled = false;
  65. }
  66. catch { }
  67. }
  68. private void collectionBtn_Click(object sender, EventArgs e)
  69. {
  70. this.openCameraBtn.Enabled = false;
  71. this.collectionBtn.Enabled = false;
  72. this.closeCameraBtn.Enabled = true;
  73. timer1.Enabled = true;
  74. }
  75. private void closeCameraBtn_Click(object sender, EventArgs e)
  76. {
  77. //关闭相机
  78. this.openCameraBtn.Enabled = true;
  79. this.collectionBtn.Enabled = false;
  80. this.closeCameraBtn.Enabled = false;
  81. HOperatorSet.CloseFramegrabber(hv_AcqHandle); //关闭相机
  82. timer1.Enabled = false; //停止定时器
  83. }
  84. private void timer1_Tick(object sender, EventArgs e)
  85. {
  86. ho_Image.Dispose();
  87. HOperatorSet.GrabImageAsync(out ho_Image, hv_AcqHandle, -1);
  88. if (HDevWindowStack.IsOpen())
  89. {
  90. HOperatorSet.DispObj(ho_Image, HDevWindowStack.GetActive());
  91. }
  92. // hv_Width.Dispose(); hv_Height.Dispose();
  93. HOperatorSet.GetImageSize(ho_Image, out hv_Width, out hv_Height);
  94. if (HDevWindowStack.IsOpen())
  95. {
  96. HOperatorSet.SetPart(HDevWindowStack.GetActive(), 0, 0, hv_Height, hv_Width);
  97. }
  98. }
  99. private void Form1_Load(object sender, EventArgs e)
  100. {
  101. this.openCameraBtn.Enabled = true;
  102. this.collectionBtn.Enabled = false;
  103. this.closeCameraBtn.Enabled = false;
  104. }
  105. }
  106. }

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/正经夜光杯/article/detail/883766
推荐阅读
相关标签
  

闽ICP备14008679号