上個月因為出差的關系,斷更了很久,為了補償大家長久的等待,送上一個新的系列,之前幾個系列也會抽空繼續更新。
大概半年多前吧,因為工作需要,我開始研究圖像識別技術。OpenCV在這方面已經有了很多技術積累,在html5領域也很早就有了這方面的Demo。但是一番學習下來,我發現基本上這方面的文章大都比較零散片面,而且很多關鍵的代碼可能已經老化不能正常使用了。所以這個系列的文章中,我將對html5與EmguCV的整體開發過程做一個整理,逐步介紹怎么使用html5技術和EmguCV類庫實現各種看上去高大上的識別技術。
本文,我會以人臉識別為例,引入html+EmguCV的基本架構(如下圖)。
前端沒有問題,在瀏覽器中用html5技術調用攝像頭,使用video和canvas標簽配合各種dom進行渲染。值得一提的是,因為這里有大量的圖像數據交互傳遞,所以需要建立websocket來與后端服務器進行交互。
后端的話,其實我開始使用的是PHP技術,但是發現openCV的安裝略糾結,于是乎轉投微軟陣營。這里我使用了framework4.5+EmguCV,微軟在frameworks4.5中已經集成了websocket的服務端套字,我們可以很方便地使用它,差不多就和之前版本中寫Ajax的處理文件一樣方便。關于EmguCV,其實就是OpenCV在c#中的再封裝,可以訪問OpenCV相關網站獲取更多信息。
接下來,我們快速地瀏覽下關鍵代碼。
html部分: