halcon聯合c#采集顯示(打開/關閉相機)


                                                                                                                  第一部分     halcon篇(hdevelop 17.12)

    

 

 

 

 

 

 

一、使用halcon的open_framegrabber算子打開相機

1.打開相機:open_framegrabber ('GigEVision2', 0, 0, 0, 0, 0, 0, 'progressive', -1, 'default', -1, 'false', 'default', '002149019150_DahengImaging_MER50014GM', 0, -1, AcqHandle)

  參數:

2.異步采集:grab_image_start (AcqHandle, -1)

  參數:

  AcqHandle (input_control)   framegrabber → (integer)
  要使用的采集設備的句柄。


  MaxDelay (input_control)    number → (real)
  這個參數已經過時,並沒有效果。
  Default value: -1.0
  Suggested values: -1.0, 20.0, 33.3, 40.0, 66.6, 80.0, 99.9

 

二、先關閉窗口,再打開一個新窗口

1.關閉窗口:dev_close_window()

2.打開窗口:dev_open_window(0,0,512,512,‘black’,WindowHandle)

  參數:

  (前面四個參數是窗口的左上角和右下角坐標值)

  (第五個參數是窗口的背景顏色)

  (第六個參數是打開窗口的句柄)

 

三、循環采集

1.開始循環:while (true)
  參數:

  (true表示無限循環)
2.采集圖像:grab_image_async (Image, AcqHandle, -1)

  參數:

  (image表示圖像變量)

  (Acqhandle為相機設備句柄)

  (-1表示異步抓取開始和圖像傳送之間的最大容許延遲[ms])

3.獲取圖像寬度get_image_size (Image, Width, Height)

  參數:

  (image同上)

  (后面兩參數表示圖像寬度,注意寬和高的順序別寫錯)
4.設置顯示圖像寬度:dev_set_part (0, 0, Width, Height)

  參數:

  (分別表示顯示的左上角坐標和右下角坐標,主要這里寬是縱坐標,高是橫坐標,注意同上)

5.顯示圖像:dev_display(Image)

  參數:

  (顯示的圖像變量)

6.結束循環:endwhile

 

四、關閉相機

1.關閉相機:close_framegrabber (AcqHandle)

 

 

 

                            第二部分    c#篇(visual studio 2015)

 

一、配置環境

1.選擇相應的框架平台  

  項目——屬性——對應的框架平台(我選net framework4.5.2)

                           

 

2.選擇生成的平台

  項目——屬性——生成——目標平台(我選x64)

                              

 

 

3.添加引用

  (1)添加halcon的.net動態庫halcondotnet.dll

      右擊引用——添加引用——瀏覽——選擇halcon安裝目錄(MVTec)——bin——選擇對應的net框架——選擇halcondotnet.dll;

                                                           

 

  (2)添加命名空間HalconDotNet

      在添加命名空間處輸入 using HalconDotNet;

                                                                      

 

  (3)添加halcon圖像窗口控件

      工具箱——公共控件——選擇項——瀏覽——選擇halcondotne.dll;

                                                                      

 

 

 

 

  (4)將動態halcon.dll和halcondotnet.dll庫復制到項目的exe所在的目錄下(bin\debug)

    在halcon安裝目錄找到對應的動態庫——手動復制到項目的debug目錄下(注意選擇相應的平台)

    (其中halcondotnet.dll可以不用復制,因為完成以上步驟后,只要編譯程序,會自動添加到debug目錄下,但是還是提倡手動添加一下)                                                             

             

 

 

 

 

二、導入halcon導出的采集顯示程序

1.halcon導出c#文件

2.打開C#文件

 

三、c#新建Windows窗體應用程序項目

1.添加一個hWindowControl控件顯示采集的圖像,一般不使用hsmartwindowcontrol控件

2.添加四個bottom控件,分別修改text屬性為:打開相機、關閉相機、單次執行、連續執行

3.添加一個Timer控件,用於實現循環采集,控制采集幀率(但精度不高)

4.定義一個bool變量,來記錄相機開關狀態

            

 

 

 

四、整合halcon導出的程序到項目中

1.復制定義變量程序

  (1)在halcon導出的C#程序中,我們只需關注private void action(){}里的程序

  (2)復制private void action(){}里的定義變量程序,其中HObject定義的為圖像變量,而HTuple定義的為控制變量

  (3)把它們復制到項目窗口類下,作為該窗口類的全局變量

                                   

 

 

2.復制打開相機程序

  判斷自定義的變量openCamear是否為false,如果是,打開相機,並給openCamear賦值為true,否則輸出提示:“相機已打開!”

 

3.復制連續采集程序

  (1)把定時器關閉放入采集顯示的botten按鈕中

                  

  (2)在定時器的Tick事件里添加halcon導出陳序的while部分,實現循環采集(注意不包含while)

 

 3.單次采集

  和定時器的Tick事件里面代碼一樣,但是要加多一句如下,關閉計時器。(注意一樣需要判斷相機是否為打開狀態)

                      

 

 

 4.關閉相機

  首先判斷相機是否打開,如果打開,則關閉並把openCamear賦值為false,否則提示:“相機已關閉!”

    

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM