频道栏目
首页 > 资讯 > Android > 正文

【首发】AndroidStudio配置JavaCV环境

16-04-22        来源:[db:作者]  
收藏   我要投稿

由于最近参加一个比赛需要用到人脸识别,但赛方限制使用第三方服务商提供的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,选择Modules下的app(此为你的Module的名称)中的Dependencies,点击右侧绿色的加号(+),选择2.File dependency ,选择添加刚才拷贝进来的javacv.jar、javacpp.jar
这里写图片描述


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 将其解压出来
解压javacv-adnroid-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环境遇到瓶颈的朋友作为一个参考。

 

相关TAG标签
上一篇:发布app到AppStore全流程
下一篇:视频流网络透传分析
相关文章
图文推荐

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站