C#使用Halcon連線相機
阿新 • • 發佈:2020-07-24
(注意:一個相機不能兩個軟體同時使用在使用vs的時候把halcon關掉,用halcon的時候把vs的關掉切記*一個大坑* 在vs中呼叫的程式碼的時候要是用多執行緒才能顯示出來影象不然則錄影顯示不出來)
1.使用Halcon開啟助手開啟一個新的Image Acquisition
2.自動檢測介面,看是否是你連線的相機介面
3.連線(連線成功之後),點選實時看一下左邊是否有相機在錄影 最好檢測一下
4.插入程式碼,然後生成C#程式碼 匯出之後用vs開啟
5.開始VS的操作
把 action方法裡面的東西貼上到你要用的地方 然後開始進行修改
列入:
1 HObject ho_Image = null; 2 3 // Local control variables 4 5 HTuple hv_AcqHandle = null; 6 private void button1_Click(object sender, EventArgs e) 7 { 8 9 // Initialize local and output iconic variables 10 HOperatorSet.GenEmptyObj(out ho_Image); 11 //Image Acquisition 01: Code generated by Image Acquisition 01 12 HOperatorSet.OpenFramegrabber("GigEVision2", 0, 0, 0, 0, 0, 0, "progressive", 13 -1, "default", -1, "false", "default", "003053308f81_Basler_acA244020gm", 14 0, -1, out hv_AcqHandle); 15 HOperatorSet.GrabImageStart(hv_AcqHandle, -1); 16 Thread thread = new Thread(GetImage); 17 thread.Start(); 18 19 //HOperatorSet.GrabImageStart(hv_AcqHandle, -1); 20 //while (true) 21 //{ 22 // HOperatorSet.GrabImageAsync(out ho_Image, hv_AcqHandle, -1); 23 // HOperatorSet.GetImageSize(ho_Image, out width, out height); 24 // HOperatorSet.SetPart(hWindowControl1.HalconWindow,0,0,width-1,height-1); 25 // HOperatorSet.DispObj(ho_Image, hWindowControl1.HalconWindow); 26 //} 27 #region 照片小測試 28 //HObject ho_Image; 29 //// Initialize local and output iconic variables 30 //HOperatorSet.GenEmptyObj(out ho_Image); 31 //ho_Image.Dispose(); 32 //HOperatorSet.ReadImage(out ho_Image, @"C:\Users\lenovo\Desktop\temp\b.jpg"); 33 34 //HOperatorSet.GetImageSize(ho_Image, out HTuple width, out HTuple height); 35 //hWindowControl1.HalconWindow.DispObj(ho_Image); 36 //ho_Image.Dispose(); 37 #endregion 38 39 } 40 41 private void GetImage() 42 { 43 while ((int)(1) != 0) 44 { 45 HOperatorSet.GrabImageAsync(out ho_Image, hv_AcqHandle, -1); 46 HOperatorSet.DispObj(ho_Image, hWindowControl1.HalconWindow); 47 } 48 HOperatorSet.CloseFramegrabber(hv_AcqHandle); 49 }