【首發】AndroidStudio配置JavaCV環境

來源:互聯網
上載者:User

【首發】AndroidStudio配置JavaCV環境

由於最近參加一個比賽需要用到Face Service,但賽方限制使用第三方服務商提供的API雲端服務調用,因此想到了使用javacv來實現,但通過百度、google搜尋發現所有的教程都是在eclipse中搭建,為此頭疼了好幾天,今天早起重新搭建一氣呵成。寫此部落客要是給新手朋友們作為參考,也是我的第一篇博文。

1、準備工作 2、環境搭建 3、測試程式準備工作

-首先需要在google網站上下載javacv需要的包
-網站:https://code.google.com/archive/p/javacv/downloads
-無法開啟的朋友可用我分享的網盤下載 http://pan.baidu.com/s/1c2BIhmo

-下載的包: javacv-0.7-bin.zip、opencv-2.4.3-android-arm.zip
- 分別解壓 javacv-0.7-bin.zip、opencv-2.4.3-android-arm.zip 到任意目錄下
-此刻準備工作結束

環境搭建

1、使用AndroidStudio建立工程StudioTestJavaCV,名字可隨意
2、開啟AndroidStudio工程,在Android視圖下無法看到工程目錄中的libs檔案夾,因此點擊Android,將其更換Project視圖
javacv-0.7-bin.zip 解壓的檔案夾中的 javacv.jar、javacpp.jar 拷貝到libs檔案夾中


然後右鍵工程,選擇Open Module Setting<喎?http://www.bkjia.com/kf/ware/vc/" target="_blank" class="keylink">vc3Ryb25nPqOs0aHU8U1vZHVsZXPPwrXEYXBwKLTLzqrE47XETW9kdWxltcTD+7PGKdbQtcQ8c3Ryb25nPkRlcGVuZGVuY2llczwvc3Ryb25nPqOsteO799PSsuDCzMmrtcS807rFKCspo6zRodTxPHN0cm9uZz4yLkZpbGUgZGVwZW5kZW5jeTwvc3Ryb25nPiAs0aHU8cztvNO41bLFv72xtL34wLS1xDxzdHJvbmc+amF2YWN2LmphcqGiamF2YWNwcC5qYXI8L3N0cm9uZz6hozxiciAvPg0KPGltZyBhbHQ9"這裡寫圖片描述" src="http://www.bkjia.com/uploads/allimg/160423/0414555028-2.png" title="\" />


3、接下來需要拷貝.so,在eclipse中只需要在libs檔案夾下建立armeabi檔案夾即可,但是由於AndroidStudio使用gradle編譯,於eclipse不同,因此按照eclipse中的方法將無法完成搭建。因此,follow me
還是同樣的Project視圖下,app>src>main 目錄下建立jniLibs目錄,然後再jniLibs下再建立armeabi目錄



3、在 javacv-0.7-bin.zip 解壓的檔案夾中找到 javacv-android-arm.jar 將其解壓出來


將該檔案夾下的所有.so檔案都拷貝到上一步建立的armeabi檔案夾下
然後再將opencv-2.4.3-android-arm.zip 解壓出來的目錄下的 libs > armeabi 下的所有.so檔案拷貝到上一步建立的armeabi檔案夾下。

以上環境搭建完成

測試程式

圖片翻轉:

註:本代碼來自網路,若作者要求停止使用,請聯絡本人立即刪除

package com.act.studiotestjavacv;import android.support.v7.app.ActionBarActivity;import android.os.Bundle;import static com.googlecode.javacv.cpp.opencv_core.IPL_DEPTH_8U;import static com.googlecode.javacv.cpp.opencv_core.cvFlip;import android.graphics.Bitmap;import android.graphics.drawable.BitmapDrawable;import android.graphics.drawable.Drawable;import android.widget.ImageView;import com.googlecode.javacv.cpp.opencv_core.IplImage;public class MainActivity extends ActionBarActivity {    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        ImageView imageView = (ImageView) findViewById(R.id.img1);        imageView.setImageResource(R.drawable.p4);        // 執行個體化控制項        ImageView img = (ImageView) findViewById(R.id.img);        // 建立映像, p4是隨便找的一張映像,這裡可以自己隨便找一張圖片代替        Drawable drawable = idToDrawable(R.drawable.p4);        Bitmap bitmap = this.drawableToBitmap(drawable);        // 將Bitmap轉化為IplImage        IplImage iplImage = this.bitmapToIplImage(bitmap);        // 處理映像,比如旋轉映像        cvFlip(iplImage, iplImage, 0);        // 再將IplImage轉化為Bitmap        bitmap = this.IplImageToBitmap(iplImage);        img.setImageBitmap(bitmap);    }    /**     * IplImage轉化為Bitmap     * @param iplImage     * @return     */    public Bitmap IplImageToBitmap(IplImage iplImage) {        Bitmap bitmap = null;        bitmap = Bitmap.createBitmap(iplImage.width(), iplImage.height(),                Bitmap.Config.ARGB_8888);        bitmap.copyPixelsFromBuffer(iplImage.getByteBuffer());        return bitmap;    }    /**     * Bitmap轉化為IplImage     * @param bitmap     * @return     */    public IplImage bitmapToIplImage(Bitmap bitmap) {        IplImage iplImage;        iplImage = IplImage.create(bitmap.getWidth(), bitmap.getHeight(),                IPL_DEPTH_8U, 4);        bitmap.copyPixelsToBuffer(iplImage.getByteBuffer());        return iplImage;    }    /**     * 將資源ID轉化為Drawable     * @param id     * @return     */    public Drawable idToDrawable(int id) {        return this.getResources().getDrawable(R.drawable.p4);    }    /**     * 將Drawable轉化為Bitmap     * @param drawable     * @return     */    public Bitmap drawableToBitmap(Drawable drawable) {        if(drawable == null)            return null;        return ((BitmapDrawable)drawable).getBitmap();    }}

可以隨便選擇一張圖片進行測試,效果如下
Android端javacv環境的搭建過程已經結束了,這是我的第一篇部落格,第一次寫部落格,想的太多,怕太粗略錯過重點,又怕太複雜沒有主次,總之是一個良好的開始,也算是作為一個學習的筆記作為後用,也希望能夠給跟我之前一樣在AndroidStudio上搭建javaCV環境遇到瓶頸的朋友作為一個參考。

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.