您的位置:首页 > 移动开发 > Android开发

android 之Opencv(java)使用

2016-11-11 17:23 211 查看
去官网下载opencv-android http://opencv.org/

解压,文件夹包含了apk,sample,sdk,把sdk的java导入工程目录下作为依赖库,如下:



3.拷贝value下的attrs.xml到res下

拷贝sdk 里native下的.so库到工程的libs目录下

创建一个Activity调用,内容如下:

package com.lee.opencvdemo;

import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.net.Uri;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;

import org.opencv.android.BaseLoaderCallback;
import org.opencv.android.LoaderCallbackInterface;
import org.opencv.android.OpenCVLoader;
import org.opencv.android.Utils;
import org.opencv.core.Mat;
import org.opencv.core.Point;
import org.opencv.core.Scalar;
import org.opencv.imgproc.Imgproc;

import java.io.FileNotFoundException;
import java.io.InputStream;

public class MainActivity extends AppCompatActivity {

private Button btn_1;
private Button btn_2;
private ImageView iv_1;
private Bitmap image;

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

btn_1 = (Button) findViewById(R.id.bt_1);
btn_2 = (Button) findViewById(R.id.bt_2);
iv_1 = (ImageView) findViewById(R.id.iv_1);

btn_1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent =new Intent(Intent.ACTION_PICK);
intent.setType("image/*");
startActivityForResult(intent,100);
}
});
btn_2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (!OpenCVLoader.initDebug()){
OpenCVLoader.initAsync(OpenCVLoader.OPENCV_VERSION_3_1_0,MainActivity.this,baseLoaderCallback);
}else {
baseLoaderCallback.onManagerConnected(LoaderCallbackInterface.SUCCESS);
}

}
});
}

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);

switch (requestCode){
case 100:
if (resultCode==RESULT_OK){
Uri uri = data.getData();
InputStream inputStream =null;
try {
inputStream =getContentResolver().openInputStream(uri);
} catch (FileNotFoundException e) {
e.printStackTrace();
}
image = BitmapFactory.decodeStream(inputStream);
}
break;
}
}

private BaseLoaderCallback baseLoaderCallback =new BaseLoaderCallback(this) {
@Override
public void onManagerConnected(int status) {
if (status == LoaderCallbackInterface.SUCCESS){
mainProcess();
}else {
super.onManagerConnected(status);
}
}
};

private void mainProcess(){
Mat mat = new Mat();
Utils.bitmapToMat(this.image,mat);
Imgproc.putText(mat,"fhgfdsgh",new Point(20,40),3,1,new Scalar(0,255,0,255),2);
Bitmap bm =Bitmap.createBitmap(mat.cols(),mat.rows(),Bitmap.Config.ARGB_8888);
Utils.matToBitmap(mat,bm);
iv_1.setImageBitmap(bm);
}
}


执行有可能会出错,可能是因为没有导入相应的.so库
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  android opencv
相关文章推荐