摘 要OpenCV是一個基于(開源)發行的跨平臺計算機視覺庫,本文主要介紹了opencv的特點、組件結構以及在移動端開發環境Android studio中的環境搭建流程和相關的圖像的邊緣檢測和直線檢測的應用。經過在移動端的開發應用,相信opencv技術在移動端的圖像處理領域能有很大的作為。
【關鍵詞】OpenCV視覺庫 圖像處理 Android平臺
Opencv全稱:Open Source Computer Vision Library,是一個可以移植到其他開發工具中的一個跨平臺的圖像處理視覺庫,它由C++語言編寫,主要有C++、C語言接口,為了能在手機等移動端更方便的進行圖像處理,我們利用其JAVA接口將opencv視覺庫添加到Android的開發工具中,實現了在移動端的圖像處理功能。
1 opencv的特點
(1)跨平臺,有很好的移植性。Opencv由跨平臺的中高層API構成,可以運行在Linux、Windows和Mac OS操作系統上,該庫有C++、C、Java接口,我們運用Java接口就可以將Opencv視覺庫移植到Android studio開發工具中。
(2)免費、開源,與耗費很高的商業化工具(比如 MATLAB+Simulink)有很大的區別。
(3)高效、快速、使用方便。Opencv視覺庫具有強大的圖像運算功能,API中有比較完善的處理函數,能夠明顯提高開發效率。
2 Opencv在Android studio中的環境搭建流程
2.1 安裝Java JDK
需要完成JDK的下載、安裝和環境配置的流程,安裝完成后,要運行資源管理器輸入 Java Version來驗證是否安裝成功,若顯示Java版本信息,則安裝成功。
2.2 下載Android Studio開發工具并安裝
在Android Studio的中文社區下載最新的Android Studio開發工具(要包含Java SDK),并運行Android Studio,根據安裝提示進行安裝,并運行開發工具。
2.3 配置Opencv Android SDK
在Opencv官網(http://OpenCV.org)下載Opencv Android SDK并解壓。在Android Studio中,新建一工程,點擊File并import Module,并選中解壓的Opencv SDK文件夾中的Java文件夾,這樣就將Opencv視覺庫移植到了Android Studio中。然后右鍵App project,打開open Module Settings中的Depencies,點擊Module Dependency,添加OpencvLibrary,這樣就完成了深層配置。最后把Opencv SDK文件夾中的native文件夾中的libs的4個文件夾復制到所建好的工作空間中的project中的libs中。
3 圖像的灰度處理和像素取反處理的應用舉例
本文中是用的移動端為魅族MX3,Android版本號為5.0.1。
3.1 灰度處理
使用OpenCv將一幅圖像轉換為灰度圖像在實際應用中也不少,轉換為灰度圖像比較簡單,關鍵函數: cvCvtColor:cvCvtColor(IplImage* src, IplImage* dst, CV_BRG2GRAY)。值得注意的是:最后一個參數為 CV_BRG2GRAY ,表示將BRG圖片(彩色圖片)轉換為灰度圖片(黑白),參數src、dst必須事先分配好內存空間,使用完之后必須要釋放空間。
3.2 像素操作—取反
OpenCV中圖像取反是將圖像中的像素點變為原來像素點的反色。例如,如果一副灰度圖像的每個像素值由2^8=256個,假設點i點像素值為brga[i] ,則取反后的像素值為 255- brga[i]&oxff。
關鍵代碼為:
int cnum = src.channels();
byte[] bgra = new byte[cnum];
for (int i = 0;i bgra[i] = (byte) (255 - bgra[i]&0xff);} 然后運用matToBitmap函數將Mat格式的圖像轉換成Bitmap的圖像,并顯示在android手機移動端。 經過編寫代碼并運行得到的處理結果如圖1所示。 4 結束語 OpenCV視覺庫是一套簡單易用且完整的計算機視覺框架,幫助開發人員完成大量的底層工作,減少了工作量,更有效提高了設計出復雜計算機圖形處理的能力。并且我們將OpenCV移植到Android操作系統中去,也是圖像處理領域的一大進步。我們相信,在OpenCVForAndroid的應用不斷拓展中,眾多圖像處理領域會有廣泛的前景。 參考文獻 [1]陳雪嬌.基于Open CV的計算機視覺技術研究[J].電腦知識與技術,2015(30). [2]張家怡.圖像識別的技術現狀和發展趨勢[J].電腦知識與技術,2010(21). [3]黎松,平西建,丁益洪.開放源代碼的計算機視覺類庫Open CV的應用[J].計算機應用與軟件,2005.22(08). [4]何鵬,王連鵬,楚艷紅.基于Open CV 的機器視覺在智能手機中的應用[J].計算機工程與設計,2011(10). [5]王福斌,李迎燕,劉杰,陳至坤.基于OpenCV的機器視覺圖像處理技術實現[J].機械與電子,2010(06). 作者簡介 劉賢輝(1992-),男,山東省青島市人。現為青島市山東科技大學在讀研究生。主要研究方向為移動端的圖像處理研究 作者單位 山東省科技大學 山東省青島市 266590