• <nav id="zi37o"></nav>
    1. <dd id="zi37o"></dd>

      <th id="zi37o"></th>
      <em id="zi37o"></em>

    2. 新聞中心

      EEPW首頁 > 設計應用 > 對??礕igE相機以Python程序連接方法的研究

      對??礕igE相機以Python程序連接方法的研究

      作者:張雍斌,李鑫,顧彬(國網上海市電力公司,上海 200235)時間:2023-08-26來源:電子產品世界收藏
      編者按:由于GigE相機在傳輸數據方面的特殊性,不同廠家需要自己設計自己的連接端口,這使得各常見提供的連接程序各不相同,同時由于多數情況下工業會采用C或C++程序來編寫控制軟件,一般廠家對GigE相機連接Python程序的軟硬件方法雖然會進行開發,但是在實際操作中缺少詳細的說明文檔以及足夠的開發實例。本文介紹了使用??礕igE相機與Python程序進行連接使用的項目經驗,可以為同類型的任務提供參考。


      本文引用地址:http://www.connhp.com/article/202308/449956.htm

      0   引言

      在工業上的視覺處理任務中,工業相機作為視覺任務的起點,起到采集圖像數據的作用,肩負重要的職能。工業相機的款式多種多樣,其中,區分它們的種類重要的一點就是相機接口標準。按照接口標準不同,工業相機常用的數字接口有GigE、Camera Link、USB3.0、CoaXPress 等類型,不同相機接口在數據傳輸方式、傳輸速度、可靠性等方面并不相同,其中GigE 接口可以滿足廉價的長距離高傳輸量的數據傳輸,相比于其他傳輸效果性價比更高,因此在工業上得到廣泛應用。但GigE 相機相比于其他類型結構不同,無法被常見的通用調用指令所使用,需要安裝專業的驅動程序,且對硬件有特殊的要求。為了實現視覺處理功能,需要將工業相機連接至計算機主機上,對軟硬件進行設計與配置,以達到傳輸數據與指令的效果。這一部分的驅動程序一般由廠家提供[1]。

      將相機與計算機連接后,還需要將圖像數據導入控制軟件中,從而自動獲取圖像數據,進行視覺處理,同時為了根據實際情況進行修正,還需要實現讓控制軟件輸出控制指令和參數到工業相機的職能。由于GigE 相機在傳輸數據方面的特殊性,不同廠家需要自己設計自己的連接端口,這使得各常見提供的連接程序各不相同,同時由于多數情況下工業會采用C 或C++ 程序來編寫控制軟件,一般廠家對GigE 相機連接 程序的軟硬件方法雖然會進行開發,但是在實際操作中缺少詳細的說明文檔以及足夠的開發實例[2]。

      本文介紹了使用??礕igE 相機與 程序進行連接使用的項目經驗,可以為同類型的任務提供參考。

      1 ??礕igE相機的硬件連接與驅動配置

      1)對于GigE 相機來說,其特殊的接口結構使得其在硬件連接方面具有一定優勢,具體的硬件連接方案有兩種:

      使用1 根電纜線將GigE 相機與網絡交換機或者其他有網絡交換機功能的設備連接起來,供電由交換機進行,然后將交換機與上位計算機連接,進行數據傳輸。這樣做的好處是相機只需要連接一根線就可以同時滿足供電和傳輸數據的要求,當相機安裝在復雜的現場時,單線傳輸能夠有效降低布線成本,提高系統的穩定性。另一方面,單線傳輸的方法可以將多個相機連接在同一個交換機上,再由交換機對主機進行溝通,擴張接口比較容易,缺點是該方法對電纜線的使用要求較高,需要能夠同時完成兩種傳輸要求的電纜線,且一臺相機使用的可用帶寬有限,約為125 Mbyte/s;

      2)使用一根電纜線連接GigE 相機與計算機用于傳輸數據,再使用一根電源線連接GigE 相機與電源,此種連接方式的成本要求低,對電纜的可靠性要求更低,傳輸數據的帶寬不會受到嚴格限制,但增加一根線提高了布線難度,降低了可靠性。

      由于本項目對連接線的布線要求不高,出于節約成本的考慮,本次項目中采取了兩根線連接GigE 相機的方案。

      除了與計算機主機的連接,還要考慮相機本身的工作問題,為了保證相機的正常工作,一方面需要保證電源的安全穩定供應,另一方面需要配備充足的光照,且盡量不要受到外界光照過強的影響。在傳輸方面,傳輸電纜需要保證至少能夠傳輸千兆大小的數據,從而使得圖像數據能夠穩定傳輸。

      為了使用GigE 相機,需要在??倒倬W下載對應的驅動程序并進行安裝,其中不同客戶端所使用的安裝程序是不同的,且安裝方式有一定差別。需要注意的是Windows 客服端的驅動程序在安裝時會自動設置網卡為巨幀傳輸,Linux 系統則需要自己進行設置,可以選擇在每次使用之前進行設置,也可以直接對常用網卡進行永久設置。

      1693012762852622.png

      圖1 相機連接圖

      安裝后按照說明書配置IP 地址,并使用??堤峁┑目刂栖浖M行調試,保證能夠順利連接工作。具體的連接過程需要經過如下階段:

      1)確認連接。對相機連接,首先需要確認物理連接成功,此時需要先查看相機上的指示燈,如果其由紅色變為藍色,說明電纜和電源線正常連接,否則需要檢查連線;

      2)設置IP 地址。如指示燈沒有問題,開始設置計算機中與相機連接的本地連接端口,將其IP 設定為固定值。之后打開MVS 控制軟件,等待列表上出現對應相機。首次連接需要較常的時間,之后再使用連接會很快。出現相機后,此時應當顯示黃色三角,意為IP 地址不屬于同一網段,不能正常。這時雙擊相機即可修改相機IP,將相機IP 設置為同一網段的不同IP 地址即可。如果連接順利,相機將變為可用狀態;

      3)連接調試。當相機為可用狀態時可以進行調試了。雙擊相機,即可正常打開相機界面,通過控制界面可以完成打開相機、設置相機參數等任務,以檢測是否能夠正常。需要注意的是相機默認設置曝光時間為0,因此剛打開時相機畫面是漆黑的,設置一個正常的曝光時間即可。使用控制軟件能夠較為方便地測試相機狀態,建議在每次對相機連接參數進行修改(如IP 地址)以及在新計算機連接相機時先使用控制軟件進行測試。

      2 ??礕igE相機的程序連接使用

      連接調試完成后,接下來就可以使用Python 程序調取運行相機了。GigE 相機的調取無法通過常用包如opencv 完成,因此要依賴??祵iT開發的用于調取運行Gige 相機的Python 包進行連接使用。??到o出了一些簡單的實例程序演示如何利用Python 包中的函數使用相機,??到o出的實例程序中,調取并使用相機要經過如下階段[3]

      2.1 發現并連接設備

      程序首先需要檢索并連接設備,這個階段首先是找尋可連接的設備,輸出可連接設備的信息,之后根據輸入的需要連接的設備IP 進行連接。??到o出了幾種連接方式,包括直接使用IP 連接,或者查找同一網段下可用于連接的相機,根據查找到的參數連接。

      2.2 打開設備并設置參數

      當確定了連接的設備后,接下來為了打開相機,首先要創建相機實例和對應的句柄,這是使用程序對相機進行操作的必要載體,1 個相機實例同時只能打開1 個相機。將相機實例與相機綁定后,就可以打開設備。為了獲取需要的圖片數據,還需要對相機的參數進行設置,實例程序中給出的調整包括探測網絡最大包大小,設置觸發模式和獲取數據包大小。其中獲取數據包大小對后面的獲取圖像數據有很大幫助。

      2.3 獲取圖片數據

      GigE 相機獲取圖片數據的方式是取流,即向相機發送信號,獲取最近一幀的圖片數據傳回。為了獲取圖片數據,首先要打開取流,此時相機才開始啟動。之后再獲取所需的數據,主要包括兩部分,一部分是圖像數據的本體,另一部分是圖像數據的參數,包括類型大小等。直接獲取的圖像數據是1 個單一的矩陣數據,如果要顯示出真實數據需要根據參數信息對其進行轉換。獲取圖像數據的方式分為主動取流和被動取流兩種,主動取流會向相機發送信號,之后獲得傳回的下一幀數據,而被動取流不發送信號,被動接受下一幀數據。實際使用起來效果差距不大。實例還提供了使用句柄進行連續取圖片的方法,可以提高獲取圖片的速度,連續取圖片就可以達到視頻的效果。

      2.4 停止獲取并關閉設備

      使用完相機后,最后需要關閉相機,如果對相機直接采用斷電等操作,會使一部分已經設置過的參數直接失效,下次需要重新設置。關閉設備主要分為三步,首先停止取流,不再獲取圖片,之后關閉設備,最后如果使用了句柄還需要銷毀句柄。

      示例程序僅僅是對功能進行一定展示,為了實際使用需要在原有的實例基礎上針對項目要求進行改進。要注意的是使用相機需要調用??堤峁┑陌募?,這些包文件可以移動至任意位置。通信程序依賴于包文件,需要對包文件進行調用,比較簡單的方法是將程序與包文件以與實例程序類似的關系放置,調用起來比較簡單。在調用了包文件后,主要改動如下:

      1)連接階段將IP 地址確定為設備使用的地址進行連接??梢允褂檬孪仍O定好的Ip 地址進行連接,也可以讀取可連接設備的IP 進行連接;

      2)設置參數階段的改變。在設置參數階段,比較重要的改變包括對曝光時間及一些必要參數的預設值,以及改變圖像的輸入格式。為了獲得所需的圖像,需要對相機的一些參數進行設置,如白平衡、曝光時間、亮度等。??堤峁┝诵薷膮档暮瘮?,但其接口比較簡單,不方便使用,故需要對其編寫專門的函數,以提高調用速度。改變圖像的輸入格式更為重要。預設的圖像格式為黑白圖像,往往不能滿足項目要求,具體圖像要求要根據項目需要來設置。由于圖像在不同格式下的數據大小和意義不同,對圖像數據的操作也需要根據輸入格式進行對應的改變;

      3)獲取所需的圖片。示例程序給的處理圖片的功能并不完善,為了獲取所需的圖片需要對其進行改造。首先是添加圖片轉換的模塊,新得到的圖片數據并沒有進行轉換,首先要將其轉換成常見的圖片格式,這一情況下要根據所讀取的圖像類型而定,根據官方提供的圖像類名對應表,根據相機結構體讀取出的實際類型,對圖像類型進行對應的格式變化。為了方便接下來的處理,還應在圖像轉換后添加格式替換的函數,轉換為統一的格式。獲得對應的圖像后,要根據實際需求進行操作,最常見的操作就是保存圖片和展示圖片,這些操作使用常用的包即可完成,為了更好地使用圖像,可以在調用時對格式大小進行一定調整。為了完成實時操作,還需要調用上一階段改變系統參數的函數,如此做到實時檢測調控。如果需要對獲取圖片的情況做到實時預覽,需要使用句柄創建進程進行操作。需要注意的是相機采集圖像的頻率與獲取圖片沒有關系,因此同時使用多個線程獲取圖片并不會影響到相機的使用效率。

      4)關閉設備的過程不用調整太多,但是如之前使用了句柄方法實現多線程讀取照片的功能后,應在關閉階段加入結束句柄的語句,做到安全退出。在使用相機時,還有一些要點需要注意。

      1)句柄使用關閉后應當重啟再使用,否則可能發生未知的錯誤;

      2)Windows 系統和Linux 系統中??堤峁┑陌募煌?,不能混用,但可以調用相同的函數,因此在不使用沖突函數的情況下程序可以在兩端同時使用。??档腖inux 示例程序中使用了Windows 不提供的包,這一部分在Window 上是不能使用的。如果需要在另一個平臺上使用程序,可以使用一些不會造成沖突的函數,之后替換掉對應位置的包文件,即可正常運行?;蛘呖梢赃x擇調用絕對位置的包,以避免不互通的問題。

      3)有的包函數會輸出一些不想要其輸出的信息,可以進入對應的包函數中進行更改。

      4)有時候當相機在同一臺主機上連接后換一個接口連接,在程序中可能會出現兩個相機同時出現的情況,這種狀況下只需要連接第一個編號的相機即可,或者根據所連接的端口來判斷應當連接哪一個相機。

      在程序設計完成后,對該方法進行了測試,程序能夠完成之前所設計的全部功能,且之后使用該方法多次獲取了3 000 多張圖片,該程序成功獲取了圖片,達到了預想的處理速度。

      1693012987138739.png

      圖2 圖像采集現場

      3 結束語

      本文設計了??礕igE 相機使用Python 程序的一種連接使用方法,該方法調用??礕igE 相機,能夠完成獲取圖像并顯示圖像,修改相機設置等功能,在實際測試過程中能夠較好的完成任務,在資料較少的情況下,對于??礕igE 相機使用Python 程序調用有一定的借鑒作用。

      該研究對于多線程圖片的獲取、多相機同時調用、多線程同時使用同一相機等高級操作還比較缺乏,在之后的研究中,還需要繼續研究更好更快地調用方式,提高獲取圖像的速度性能。

      參考文獻:

      [1] 張仰月.智能相機應用軟件設計及GigE Vision協議實現[D].南京:南京郵電大學,2019.

      [2] 阮暉雄.GIGE工業CIS相機關鍵技術的研究[D].成都:電子科技大學,2022.

      [3] 羅瀟磊.基于的輕小型相機研究[D].上海:中國科學院研究生院(上海技術物理研究所),2016.

      (本文來源于《電子產品世界》雜志2023年8月期)



      評論


      相關推薦

      技術專區

      關閉
      日韩碰撞无码视频

    3. <nav id="zi37o"></nav>
      1. <dd id="zi37o"></dd>

        <th id="zi37o"></th>
        <em id="zi37o"></em>