Android Studio 2.1 + javaCV 1.2 配置

1, 下载并解压 javaCV 1.2

JavaCV 官方网站
地址 : https://github.com/bytedeco/javacv

下载选项

解压下载文件, 内容如下图

2.png

2, 打开Android Studio 新建项目.

3, 将以下包拷贝到"\TestJavaCV\app\libs"文件夹下.

3.png

4, 在app上按"F4"打开 Project Structure 页面.

4.1 选择 Dependencies , 如下图.

4.png

4.2 点击右侧 "+",选择"2 File Dependency". 将刚才拷贝的".jar"文件添加进去.

5.png

5, 在"app/build.gradle"中添加如下代码

android {
    //Exclude duplicates
    packagingOptions {
        exclude 'META-INF/services/javax.annotation.processing.Processor'
        pickFirst  'META-INF/maven/org.bytedeco.javacpp-presets/opencv/pom.properties'
        pickFirst  'META-INF/maven/org.bytedeco.javacpp-presets/opencv/pom.xml'
        pickFirst  'META-INF/maven/org.bytedeco.javacpp-presets/ffmpeg/pom.properties'
        pickFirst  'META-INF/maven/org.bytedeco.javacpp-presets/ffmpeg/pom.xml'
    }
}
6.png

注意 : 如果不添加上面的代码会出现一下错误

错误信息

5, 测试程序

package com.wsj.custemview.testjavacv;

import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.drawable.BitmapDrawable;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.widget.ImageView;

import org.bytedeco.javacpp.opencv_core;
import org.bytedeco.javacpp.opencv_core.IplImage;

// 静态成员变量必须 static导入.
import static org.bytedeco.javacpp.opencv_core.IPL_DEPTH_8U;
import static org.bytedeco.javacpp.opencv_core.cvFlip;


public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        ImageView imageView = (ImageView) findViewById(R.id.img1);
        // Drawable drawable = idToDrawable(R.mipmap.ic_launcher);

        // Bitmap bitmap = this.drawableToBitmap(drawable);
        Bitmap bitmap = BitmapFactory.decodeResource(getResources(),R.mipmap.ic_launcher);
        IplImage iplImage = this.bitmapToIplImage(bitmap);
        cvFlip(iplImage,iplImage,0);
        bitmap = this.IplImageToBitmap(iplImage);
        imageView.setImageBitmap(bitmap);
    }
    /**
     * IplImage转化为Bitmap
     * @param iplImage
     * @return
     */
    public Bitmap IplImageToBitmap(opencv_core.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 opencv_core.IplImage bitmapToIplImage(Bitmap bitmap) {
        opencv_core.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(id);
    }

    /**
     * 将Drawable转化为Bitmap
     * @param drawable
     * @return
     */
    public Bitmap drawableToBitmap(Drawable drawable) {
        if(drawable == null)
            return null;
        return ((BitmapDrawable)drawable).getBitmap();
    }
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 174,143评论 25 709
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,198评论 19 139
  • 《裕语言》速成开发手册3.0 官方用户交流:iApp开发交流(1) 239547050iApp开发交流(2) 10...
    叶染柒丶阅读 28,094评论 5 19
  • 刚刚看到这个问题,突然反问自己,如果30岁还没有结婚?自己在过什么样的生活?也许人多人感觉很奇怪,很多人会不理解,...
    简单木子阅读 202评论 0 0
  • 四月蒸煮着天气 无情的抹杀淡泊的诗意 春天、夏天、秋天 捉着扑朔迷离的迷藏 落叶踏着温度的舞步 预演半年后的秋天 ...
    道路沉默阅读 166评论 0 1