今天我們一起來使用LabVIEW AI視覺工具包快速實現影象的讀取與顏色空間轉換、從攝像頭採集影象。工具包的安裝與下載方法可見之前的兩篇隨筆。
已經安裝好的工具包位於程式框圖-函數選板-Addons-VIRobotics-opencv_yiku,內容包括:Mat型別(矩陣)的操作、攝像頭採集、圖片檔案讀寫、基本運算元、視訊生成、神經網路呼叫等功能。
(1)程式框圖面板右鍵:File I/O,拖出拆分路徑和拼接路徑函數到程式框圖面板待用;
(2)程式框圖面板右鍵:File I/O -->File Constants,拖出當前路徑函數到程式框圖面板待用;
(1)在程式框圖面板空白處右鍵-->在函數選板-->Addons-->VIRobotics-->opencv_yiku-imgcodes中找到要使用的imread函數,拖出;
(2)imread函數讀取指定路徑的圖片(jpg/png/bmp格式),返回Mat物件,具體輸入輸出如下所示:
(3)程式框圖面板右鍵:Application Control-->Property Node,將屬性節點拖出,用來獲取Mat物件中的各種引數(本例中是圖片),並放到圖片控制元件中;
(4)釋放Mat資源;
(5)按照下圖所示連線,將待讀取的圖片與此vi置於同一路徑下並執行;
(6)讀取圖片如下圖所示(左側為原圖,右側為讀取出來的圖片),我們發現讀取的圖片顏色和原圖不一樣;
(1)因為LabVIEW中的影象排列順序是RGB,opencv中的影象排列順序是BGR,所以讀取出來的圖片顏色和原圖不一樣;
(2)使用運算元cvtColor進行顏色空間轉換,程式框圖面板右鍵: Addons-->VIRobotics-->opencv_yiku-->imgproc: cvtColor ,拖出;
(3)運算元cvtColor的輸入與輸出如下圖所示:
(4)LabVIEW中運算元(cvtColor)的使用方式一:輸入的dst端不接輸入,執行函數後輸出的圖片會替換掉原來的圖片(src out和dst out的值一致),程式及結果如下圖所示:
(5)LabVIEW中運算元(cvtColor)的使用方式二:輸入的dst端接一個Create_Mat,即新建一個mat物件,執行函數後,dst的內容不會影響src的內容;程式及結果如下圖所示:
(1)新建一個vi,在程式框圖面板右鍵:Addons-->VIRobotics --> opencv_yiku: Camera。找到攝像頭初始化函數new_Cap,函數右上角輸出Cap,是使用攝像頭前的必備動作,將其拖至面板空白處備用;
(2)在程式框圖面板右鍵:Addons-->VIRobotics --> opencv_yiku: Camera。找到startCaptura,將其拖至面板空白處,使用該函數若只填寫camerID時,請保障攝像頭正常。只要連線有preference,則有多個本地攝像頭時,優先使用分配到該ID的攝像頭,若該攝像頭不存在,則使用其它攝像頭。
(3)在程式框圖面板右鍵:Addons-->VIRobotics --> opencv_yiku: Camera。找到獲取影象函數readImage,接在開啟攝像頭之後,用以獲取攝像頭拍攝的影象。 Mat輸出影象(矩陣);
(4)在程式框圖面板右鍵:Addons-->VIRobotics --> opencv_yiku: Camera。找到停止拍攝函數stopCapture,接到程式最後,釋放攝像頭資源,若不操作,可能會造成下一次使用不便。
(1)程式框圖面板右鍵:Application Control : Property Node,拖出,接至startCaptura之後
(2)根據攝像頭實際支援的解析度設定寬高。屬性的箭頭在右側表示讀取,只需右鍵選擇Change To Write即可修改為寫入。
整體程式如下,使用迴圈採集影象,點選stop按鈕,迴圈結束,整個程式結束並釋放資源。
連結:https://pan.baidu.com/s/1TEihgoG5bIFz1SRCIab-mQ
提取碼:8888
更多關於LabVIEW與人工智慧技術,可新增技術交流群進一步探討。
qq群號:705637299,請備註暗號:LabVIEW 機器學習