JavaCVNote:AS加载配置JavaCV-1.2环境

JavaCVNote:AS加载配置JavaCV-1.2环境


  • 先简单介绍下JavaCV,JavaCV 是一款开源的视觉处理库,基于Apache License Version 2.0协议和GPLv2两种协议,对各种常用计算机视觉库封装后的一组jar包,封装了OpenCV、libdc1394、OpenKinect、videoInput和ARToolKitPlus等计算机视觉编程人员常用库的接口。简单点说它就是个库,封装了很多Class类或者说接口,能有利于我们做图像处理、视频处理等开发;那么废话不多说,我们开始吧!

1、JavaCV库包下载

  • 目前对于JavaCV来说已经到了v15.1了,但是我还是以1.2来演示,反正加载配置的手续是一样的没有什么大的区别。
  • 下载区:

JavaCV是由Bytedeco这个组织开源提供的,当然就少不了它的提供网址啦!从官网下载速度会非常慢,其实是从GitHub下载非常慢,各种限速,本来想贴出快些的链接给你的,但是失败了,只能你自己去找度娘喽!!!

  • 下载解压,一睹芳容:
    在这里插入图片描述

2、AS(Android Studio)工程库添加

  • 切换到Project管理层,方便查看
    在这里插入图片描述
  • 将上一步解压的javacv.jar、javacpp.jar、opencv.jar、opencv-android-arm.jar四个包复制到你的Moudle项目的libs文件夹下,如果没有请手动创建即可,注意对于opencv-android-arm.jar文件的类型你要根据你的系统与模拟器而定;
    在这里插入图片描述
  • 建立依赖关系,打开Moudle Setting->Dependencies,再点击右侧 “+”,选择"2 File Dependency",选择jar文件即可;
    在这里插入图片描述
  • 在"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'
    }
    ....
}
  • 成功与否,一睹芳容,预编译后,查看app/build.gradle是不是多以下代码:
    在这里插入图片描述

3、测试开始喽!

  • 在MainActivity下添加如下代码:
package com.sylanty.demonstrationproject;

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.img);
        // 创建图像, 使用自带的ic_launcher
        Drawable drawable = idToDrawable(R.mipmap.ic_launcher);
        Bitmap bitmap = this.drawableToBitmap(drawable);
        // 将Bitmap转化为IplImage
        IplImage iplImage = this.bitmapToIplImage(bitmap);
        // 处理图像,比如旋转图像
        cvFlip(iplImage, iplImage, 0);
        // 再将IplImage转化为Bitmap
        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();
    }
}

总结:

加载配置JavaCV成功,开启图像处理之路!!!

为了曾经那个轻易许下的梦
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Chipei Kung

为了曾经那个轻易许下的梦!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值