1. 程式人生 > >C#應用視頻教程3.1 USB工業相機測試

C#應用視頻教程3.1 USB工業相機測試

高光 -s back 進行 ace 測試環境 family 在線 學習

圖像處理是工控很有價值的一個領域,比如人臉識別,車牌識別,還有產品的位置識別,瑕疵檢測,對於個人學習來說,我們無法直接上手幾萬塊的成熟工業相機(高端的康耐視要6萬左右,而且是黑白的,要測試一些帶顏色的算法功能無法實現),先要用便宜的東西做一些簡單的測試(原則上做教程不應該涉及硬件,因為如果讀者無法按照你的硬件標準學習,那也只能走馬觀花看一遍,但是實際上要做工控必須要涉及硬件,可以先從簡單的便宜的開始入手)

?

淘寶是比較靠譜的方案,我自己測試買的是下面這個品牌的(不是要給他們做廣告,讀者也可以自己淘寶找,基本上300萬像素+開發的SDK肯定是夠用了,如果你幾百塊也不願意掏,筆記本自帶的USB攝像頭也是可以用的)

https://item.taobao.com/item.htm?spm=a1z10.1-c.w7874616-7250487742.3.45ee61bbSIGhsG&id=35665919843

技術分享

?

註意買相機也要買鏡頭(單相機是不能用的,買什麽樣的適配鏡頭可以問賣家,講清楚你要做什麽應用)

https://item.taobao.com/item.htm?spm=a1z10.1-c.w4004-12792600741.30.45ee61bb6b1V1X&id=551842092602

技術分享

?

如果可能最好再加一個支架和光源(我個人的測試環境有支架,所以不需要,僅僅是測試使用光源也無所謂,我手動調節鏡頭的曝光就行了)

https://item.taobao.com/item.htm?spm=a230r.1.14.16.76bf523Q04ZVR&id=520267199036&ns=1&abbucket=15#detail

技術分享

?

我剛開始玩這個的時候很窮,所以只能隨便找了塊板子打個孔,然後就開始測試了(沒有人條件很充分的,幾年以後我再回過頭來把這一塊東西理理順,也只是為了培訓帶人)

技術分享技術分享技術分享

?

對於具體型號的工業相機,一般需要安裝相機提供的驅動,比如我這個就把相機連接到電腦的USB口,手動安裝驅動

技術分享

?

用微軟自帶的視頻設備能夠打開(假定就拍攝顯示器的畫面)

技術分享

?

用它自帶的調試軟件測試能夠正常使用(可以調整分辨率)

技術分享

?

可以進行詳細的參數設置(拍照,視頻,曝光等)

技術分享

?

運行軟件提供的SDK測試(註意需要把對應的DLL放到C:/Windows/System32/目錄下,如果是32位系統則復制SDK的那個DLL文件,如果是64為則復制SDK64的那個DLL文件)

技術分享

?

運行C#的範例程序(點擊Play可以顯示實時的畫面),如果不能運行修改目標平臺為對應的系統版本(我是64位系統)

技術分享

?

有了C#的範例,基本上我們能夠把硬件采集圖像的這一塊內容搞定了,大量的比如調節曝光,圖像翻轉,設置分辨率等等功能我們都可以直接照抄範例代碼的,註意這部分不管怎麽弄目的都是獲取我們期望的圖像而已,一般越清晰越好(我們後面要介紹的是圖像處理,所以本節並不是重點,事實上你從工業相機采集圖像也是采集,從USB的攝像頭也是,或者沒有攝像頭直接用圖片也可以,你自己PS幾個圖片也能測試視覺系統的算法)

技術分享

?

註意他這個範例代碼有一塊使用了指針直接覆蓋采集到圖像的數據(比如把某一塊的像素填充為紅色),不要覺得是相機壞掉了,它上面還有一部分註釋掉的代碼可以測試其他功能

技術分享

?

除了C#的開發範例,他也提供了C++,QT等其他語言的實現範例和SDK的說明書(我們看一個產品做的是否到位,就只要看他給的資料全不全,因為目前用C#測試以後也可能換成別的語言,所以選擇一款產品就要考慮到後期的平臺移植,盡量用好一樣東西,不要這也會那也玩過,結果一樣都不精通。當然我還是那句話,我不是給這個商家在做廣告,只是告訴讀者一些工控的經驗和教訓,有時候並不能僅僅判斷便宜一兩百塊錢就輕易下結論買哪家的,如果我們考慮工業使用,肯定不是是USB的,而是幾千塊的以太網通訊的相機,在那個價位的產品上挑一個好一點的)

技術分享

?

最後介紹幾個相機的常用概念:

Gama:伽瑪值。可以認為是一種控制圖像清晰度的一個參數,Gamma值越大,則取得的圖像像素越精細,成像越逼真

技術分享

?

Contrast:對比度,這個很好理解,以前看黑白電視機的時候經常用到,對比度調大一點,物體與周圍的對比會更明顯一點

技術分享

?

Exposure:曝光度,感覺跟Gain用處差不多,可以認為是Gain的微調吧,我把Exposure從1040調到5000也沒有關系,可見他是可以微調亮度的。Exposure在調小的時候就很敏感,太小了就直接烏黑一片,當然正常不會去烏黑一片的。

技術分享

?

Gain:在相機裏Gain表示高光度,Gain limit 是感光度的範圍,數碼相機的影像傳感器是不可更換的,為了得到不同的感光度,它需要在信號的A/D轉換時變換信號增益(Gain)。如果光線暗,就需要提高感光度即加大增益,這會降低信噪比,也就是增大了噪點。從下面三個不同的高光度可以發現,就像高光度越大,則越亮。Gain的用處就是在黑暗的時候要手動把高光度調大一點,成像才能清晰。

技術分享

?

ROI:就是感興趣窗口(Region of interest),比如一副2048*1536的圖像非常大,處理起來很慢,我們設置感興趣窗口只有200*200的這麽一個小塊,就可以每次只提取大圖像的一小塊做處理,可以顯著的提升效率

技術分享

?

?

更多教學視頻和資料下載,歡迎關註以下信息:

我的優酷空間:

http://i.youku.com/acetaohai123

技術分享

?

我的在線論壇:

http://csrobot.gz01.bdysite.com/

技術分享

?

問題交流:

QQ:910358960

郵箱:[email protected]

?

?

C#應用視頻教程3.1 USB工業相機測試