Android學習六---OpenCV for android samples

來源:互聯網
上載者:User

標籤:android   style   blog   http   io   ar   color   使用   sp   

      搭建好OpenCV4Android環境後,就要著手開發自己的應用了。對於一個沒有OpenCV基礎的人來開發OpenCV應用確實有點難度,不過我們可以從samples裡學起,結合javadoc和萬能的網路開發一個簡單的應用應該不難。為了簡單,我們採用的是純粹的java API不涉及JNI,等對這一部分熟悉之後再來採用JNI實現。

     首先對OpenCV的android應用來個感性的認識,把samples中的image-manipulations安裝到手機上(手機上先安裝好OpenCV manager 和binary pack見上節),然後把menu調出來,試一試Histograms,Canny  ,sobel 等菜單,會發現應用對網路攝影機捕獲的映像即時的處理,在螢幕的一個小的視窗中輸出處理結果圖。

   這樣一來我們的重點就確定了,簡單的介面設計,資料存放區,顯示和演算法的應用是關鍵。而演算法的應用就通過調用一系列的API來實現。我們就圍繞下面幾個問題來進行

1.操縱相機,取出映像進行處理

首先必須要知道OC(OpenCV)是怎麼操縱相機的,如何從映像流中取出一幀幀來進行處理?

解決:通過opencv官網的例子瞭解

JAVA 包含OpenCV java包。即通過非同步的方式來進行應用開發,這個是官網強烈推薦的方式,因為可以減少代碼量等優勢,主要是用OpenCV Manager方式來擷取OpenCV庫(已經在目標系統安裝好了)

1.1 File -> Import -> Existing project in your workspace.

1.2.  Project -> Properties -> Android -> Library -> Addselect OpenCV Library - 2.4.9.

 

1.3   一個簡單的程式

public class Sample1Java extends Activity implements CvCameraViewListener {    private BaseLoaderCallback mLoaderCallback = new BaseLoaderCallback(this) {        @Override        public void onManagerConnected(int status) {            switch (status) {                case LoaderCallbackInterface.SUCCESS:                {                    Log.i(TAG, "OpenCV loaded successfully");                    mOpenCvCameraView.enableView();                } break;                default:                {                    super.onManagerConnected(status);                } break;            }        }    };    @Override    public void onResume()    {        super.onResume();        OpenCVLoader.initAsync(OpenCVLoader.OPENCV_VERSION_2_4_6, this, mLoaderCallback);    }    ...}

OnManagerConnected callback會在UI線程中調用,在使用OpenCV調用或者載入OpenCV支撐的本地庫前一定要先包含這一調用。在OpenCV成功初始化後載入本地庫,預設的BaseLoaderCallback會把應用程式上下文當成是Activity,所以在初始化失敗時會調用Activity.finish()。要重寫這一行為,就必須重寫finish()這一方法。

2.要瞭解處理的程式是寫在哪一部分的,如何達到只對這一部分修改,而其他部分不變?

官網上的samples,ImageManipulationsActivity採用的是OpenCV java API來寫的,通過一個hello opencv知道整個流程(雖然這個程式沒有運行成功),

知道應該修改的是OnCameraFrame,對每幀映像進行處理。

3.如何?一個簡單基於連通域分析的OpenCV文本定位演算法,把演算法嵌入應用程式中?

演算法流程,對彩色的幀映像進行二值化,二值化之後進行連通域分析,分析每個連通域的情況,對連通域進行分析,去除一些不符合要求的,對剩下的連通域採用形態學影像處理,連成一個文本行,在對文本行進行濾除,最後得到文本的地區位置。

4.如何對錯誤進行調試使最終實現運行?

採用同Android相同的方式進行調試,如logcat和端點,一系列快速鍵的使用如F5,F6,F7,F8 和ctrl+R等。

Android學習六---OpenCV for android samples

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.