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