關(guān) 閉

新聞中心

EEPW首頁 > 安全與國防 > 設(shè)計(jì)應(yīng)用 > 對??礕igE相機(jī)以Python程序連接方法的研究

對海康GigE相機(jī)以Python程序連接方法的研究

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


本文引用地址:http://2s4d.com/article/202308/449956.htm

0   引言

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

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

本文介紹了使用海康GigE 相機(jī)與 程序進(jìn)行連接使用的項(xiàng)目經(jīng)驗(yàn),可以為同類型的任務(wù)提供參考。

1 ??礕igE相機(jī)的硬件連接與驅(qū)動(dòng)配置

1)對于GigE 相機(jī)來說,其特殊的接口結(jié)構(gòu)使得其在硬件連接方面具有一定優(yōu)勢,具體的硬件連接方案有以下兩種。

使用1 根電纜線將GigE 相機(jī)與網(wǎng)絡(luò)交換機(jī)或者其他有網(wǎng)絡(luò)交換機(jī)功能的設(shè)備連接起來,供電由交換機(jī)進(jìn)行,然后將交換機(jī)與上位計(jì)算機(jī)連接,進(jìn)行數(shù)據(jù)傳輸。這樣做的好處是相機(jī)只需要連接一根線就可以同時(shí)滿足供電和傳輸數(shù)據(jù)的要求,當(dāng)相機(jī)安裝在復(fù)雜的現(xiàn)場時(shí),單線傳輸能夠有效降低布線成本,提高系統(tǒng)的穩(wěn)定性。另一方面,單線傳輸?shù)姆椒梢詫⒍鄠€(gè)相機(jī)連接在同一個(gè)交換機(jī)上,再由交換機(jī)對主機(jī)進(jìn)行溝通,擴(kuò)張接口比較容易,缺點(diǎn)是該方法對電纜線的使用要求較高,需要能夠同時(shí)完成兩種傳輸要求的電纜線,且一臺(tái)相機(jī)使用的可用帶寬有限,約為125 Mbyte/s。

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

由于本項(xiàng)目對連接線的布線要求不高,出于節(jié)約成本的考慮,本次項(xiàng)目中采取了兩根線連接GigE 相機(jī)的方案。

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

為了使用GigE 相機(jī),需要在海康官網(wǎng)下載對應(yīng)的驅(qū)動(dòng)程序并進(jìn)行安裝,其中不同客戶端所使用的安裝程序是不同的,且安裝方式有一定差別。需要注意的是Windows 客服端的驅(qū)動(dòng)程序在安裝時(shí)會(huì)自動(dòng)設(shè)置網(wǎng)卡為巨幀傳輸,Linux 系統(tǒng)則需要自己進(jìn)行設(shè)置,可以選擇在每次使用之前進(jìn)行設(shè)置,也可以直接對常用網(wǎng)卡進(jìn)行永久設(shè)置。

1693012762852622.png

圖1 相機(jī)連接圖

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

1)確認(rèn)連接。對相機(jī)連接,首先需要確認(rèn)物理連接成功,此時(shí)需要先查看相機(jī)上的指示燈,如果其由紅色變?yōu)樗{(lán)色,說明電纜和電源線正常連接,否則需要檢查連線;

2)設(shè)置IP 地址。如指示燈沒有問題,開始設(shè)置計(jì)算機(jī)中與相機(jī)連接的本地連接端口,將其IP 設(shè)定為固定值。之后打開MVS 控制軟件,等待列表上出現(xiàn)對應(yīng)相機(jī)。首次連接需要較常的時(shí)間,之后再使用連接會(huì)很快。出現(xiàn)相機(jī)后,此時(shí)應(yīng)當(dāng)顯示黃色三角,意為IP 地址不屬于同一網(wǎng)段,不能正常。這時(shí)雙擊相機(jī)即可修改相機(jī)IP,將相機(jī)IP 設(shè)置為同一網(wǎng)段的不同IP 地址即可。如果連接順利,相機(jī)將變?yōu)榭捎脿顟B(tài);

3)連接調(diào)試。當(dāng)相機(jī)為可用狀態(tài)時(shí)可以進(jìn)行調(diào)試了。雙擊相機(jī),即可正常打開相機(jī)界面,通過控制界面可以完成打開相機(jī)、設(shè)置相機(jī)參數(shù)等任務(wù),以檢測是否能夠正常。需要注意的是相機(jī)默認(rèn)設(shè)置曝光時(shí)間為0,因此剛打開時(shí)相機(jī)畫面是漆黑的,設(shè)置一個(gè)正常的曝光時(shí)間即可。

使用控制軟件能夠較為方便地測試相機(jī)狀態(tài),建議在每次對相機(jī)連接參數(shù)進(jìn)行修改(如IP 地址)以及在新計(jì)算機(jī)連接相機(jī)時(shí)先使用控制軟件進(jìn)行測試。

2 海康GigE相機(jī)的程序連接使用

連接調(diào)試完成后,接下來就可以使用Python 程序調(diào)取運(yùn)行相機(jī)了。GigE 相機(jī)的調(diào)取無法通過常用包如opencv 完成,因此要依賴海康專門開發(fā)的用于調(diào)取運(yùn)行Gige 相機(jī)的Python 包進(jìn)行連接使用。海康給出了一些簡單的實(shí)例程序演示如何利用Python 包中的函數(shù)使用相機(jī),海康給出的實(shí)例程序中,調(diào)取并使用相機(jī)要經(jīng)過如下階段[3]

2.1 發(fā)現(xiàn)并連接設(shè)備

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

2.2 打開設(shè)備并設(shè)置參數(shù)

當(dāng)確定了連接的設(shè)備后,接下來為了打開相機(jī),首先要?jiǎng)?chuàng)建相機(jī)實(shí)例和對應(yīng)的句柄,這是使用程序?qū)ο鄼C(jī)進(jìn)行操作的必要載體,1 個(gè)相機(jī)實(shí)例同時(shí)只能打開1 個(gè)相機(jī)。將相機(jī)實(shí)例與相機(jī)綁定后,就可以打開設(shè)備。為了獲取需要的圖片數(shù)據(jù),還需要對相機(jī)的參數(shù)進(jìn)行設(shè)置,實(shí)例程序中給出的調(diào)整包括探測網(wǎng)絡(luò)最大包大小,設(shè)置觸發(fā)模式和獲取數(shù)據(jù)包大小。其中獲取數(shù)據(jù)包大小對后面的獲取圖像數(shù)據(jù)有很大幫助。

2.3 獲取圖片數(shù)據(jù)

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

2.4 停止獲取并關(guān)閉設(shè)備

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

示例程序僅僅是對功能進(jìn)行一定展示,為了實(shí)際使用需要在原有的實(shí)例基礎(chǔ)上針對項(xiàng)目要求進(jìn)行改進(jìn)。要注意的是使用相機(jī)需要調(diào)用??堤峁┑陌募@些包文件可以移動(dòng)至任意位置。通信程序依賴于包文件,需要對包文件進(jìn)行調(diào)用,比較簡單的方法是將程序與包文件以與實(shí)例程序類似的關(guān)系放置,調(diào)用起來比較簡單。在調(diào)用了包文件后,主要改動(dòng)如下。

1)連接階段將IP 地址確定為設(shè)備使用的地址進(jìn)行連接。可以使用事先設(shè)定好的Ip 地址進(jìn)行連接,也可以讀取可連接設(shè)備的IP 進(jìn)行連接。

2)設(shè)置參數(shù)階段的改變。在設(shè)置參數(shù)階段,比較重要的改變包括對曝光時(shí)間及一些必要參數(shù)的預(yù)設(shè)值,以及改變圖像的輸入格式。為了獲得所需的圖像,需要對相機(jī)的一些參數(shù)進(jìn)行設(shè)置,如白平衡、曝光時(shí)間、亮度等。海康提供了修改參數(shù)的函數(shù),但其接口比較簡單,不方便使用,故需要對其編寫專門的函數(shù),以提高調(diào)用速度。改變圖像的輸入格式更為重要。預(yù)設(shè)的圖像格式為黑白圖像,往往不能滿足項(xiàng)目要求,具體圖像要求要根據(jù)項(xiàng)目需要來設(shè)置。由于圖像在不同格式下的數(shù)據(jù)大小和意義不同,對圖像數(shù)據(jù)的操作也需要根據(jù)輸入格式進(jìn)行對應(yīng)的改變。

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

4)關(guān)閉設(shè)備的過程不用調(diào)整太多,但是如之前使用了句柄方法實(shí)現(xiàn)多線程讀取照片的功能后,應(yīng)在關(guān)閉階段加入結(jié)束句柄的語句,做到安全退出。在使用相機(jī)時(shí),還有一些要點(diǎn)需要注意。

1)句柄使用關(guān)閉后應(yīng)當(dāng)重啟再使用,否則可能發(fā)生未知的錯(cuò)誤。

2)Windows 系統(tǒng)和Linux 系統(tǒng)中??堤峁┑陌募煌荒芑煊?,但可以調(diào)用相同的函數(shù),因此在不使用沖突函數(shù)的情況下程序可以在兩端同時(shí)使用。海康的Linux 示例程序中使用了Windows 不提供的包,這一部分在Window 上是不能使用的。如果需要在另一個(gè)平臺(tái)上使用程序,可以使用一些不會(huì)造成沖突的函數(shù),之后替換掉對應(yīng)位置的包文件,即可正常運(yùn)行?;蛘呖梢赃x擇調(diào)用絕對位置的包,以避免不互通的問題。

3)有的包函數(shù)會(huì)輸出一些不想要其輸出的信息,可以進(jìn)入對應(yīng)的包函數(shù)中進(jìn)行更改。

4)有時(shí)候當(dāng)相機(jī)在同一臺(tái)主機(jī)上連接后換一個(gè)接口連接,在程序中可能會(huì)出現(xiàn)兩個(gè)相機(jī)同時(shí)出現(xiàn)的情況,這種狀況下只需要連接第一個(gè)編號(hào)的相機(jī)即可,或者根據(jù)所連接的端口來判斷應(yīng)當(dāng)連接哪一個(gè)相機(jī)。

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

1693012987138739.png

圖2 圖像采集現(xiàn)場

3 結(jié)束語

本文設(shè)計(jì)了海康GigE 相機(jī)使用Python 程序的一種連接使用方法,該方法調(diào)用海康GigE 相機(jī),能夠完成獲取圖像并顯示圖像,修改相機(jī)設(shè)置等功能,在實(shí)際測試過程中能夠較好的完成任務(wù),在資料較少的情況下,對于海康GigE 相機(jī)使用Python 程序調(diào)用有一定的借鑒作用。

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

參考文獻(xiàn):

[1] 張仰月.智能相機(jī)應(yīng)用軟件設(shè)計(jì)及GigE Vision協(xié)議實(shí)現(xiàn)[D].南京:南京郵電大學(xué),2019.

[2] 阮暉雄.GIGE工業(yè)CIS相機(jī)關(guān)鍵技術(shù)的研究[D].成都:電子科技大學(xué),2022.

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

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



關(guān)鍵詞: 202308 GigE接口 Python 通信

評論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉