Android OpenCV 图片读入 灰度化处理
AndroidStudio 导入 OpenCv 【翻了一些博客以后写出来的】
·文件复制 : OpenCV-Android-sdk\sdk中的Java文件 复制到 工程根目录下
·导入模块界面 : File->new->import module 选择导入后的java文件夹
·加入依赖 : File->project structure ->
app -> Dependencies -> + -> Module dependency
·build.gradle文件修改 : compileSdkVersion、minSdkVersion、targetSdkVersion
与app模块的build.gradle设置为一样的
·代码 : 变量mLoaderCallback 【MainActivity.java】
private BaseLoaderCallback mLoaderCallback = new BaseLoaderCallback(this) {
@Override
public void onManagerConnected(int status) {
switch (status) {
case LoaderCallbackInterface.SUCCESS: {
Log.i(TAG, "OpenCV loaded successfully");
}
break;
default: {
super.onManagerConnected(status);
}
break;
}
}
};
·代码 : MainActivity.java内部加入的重载函数onResume
@Override
public void onResume() {
super.onResume();
if (!OpenCVLoader.initDebug()) {
Log.d(TAG, "Internal OpenCV library not found. Using OpenCV Manager for initialization");
OpenCVLoader.initAsync(OpenCVLoader.OPENCV_VERSION_3_0_0, this, mLoaderCallback);
} else {
Log.d(TAG, "OpenCV library found inside package. Using it!");
mLoaderCallback.onManagerConnected(LoaderCallbackInterface.SUCCESS);
}
}
xml代码:
[code]<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" tools:context="com.example.opencv_practise.MainActivity"> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal"> <Button android:layout_weight="1" android:id = "@+id/btn_process" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="GRAY"/> <Button android:layout_weight="1" android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/btn_rgb" android:text = "RGB"/> </LinearLayout> <ImageView android:id="@+id/im_j20" android:layout_width="match_parent" android:layout_height="wrap_content" app:srcCompat="@drawable/im_j20" /> </LinearLayout>
Java代码:
[code]package com.example.opencv_practise; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.util.Log; 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.imgproc.Imgproc; public class MainActivity extends AppCompatActivity { ImageView iv; String TAG = new String("test"); private BaseLoaderCallback mLoaderCallback = new BaseLoaderCallback(this) { @Override public void onManagerConnected(int status) { switch (status) { case LoaderCallbackInterface.SUCCESS: { Log.i(TAG, "OpenCV loaded successfully"); } break; default: { super.onManagerConnected(status); } break; } } }; @Override protected void onResume() { super.onResume(); if (!OpenCVLoader.initDebug()) { Log.d(TAG, "Internal OpenCV library not found. Using OpenCV Manager for initialization"); OpenCVLoader.initAsync(OpenCVLoader.OPENCV_VERSION_3_0_0, this, mLoaderCallback); } else { Log.d(TAG, "OpenCV library found inside package. Using it!"); mLoaderCallback.onManagerConnected(LoaderCallbackInterface.SUCCESS); } } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //loadOpenCV(); iv = (ImageView) findViewById(R.id.im_j20); Button btn_process = (Button)findViewById(R.id.btn_process); btn_process.setOnClickListener(new View.OnClickListener(){ @Override public void onClick(View v) { Togray(); } }); Button btn_rgb = (Button)findViewById(R.id.btn_rgb); btn_rgb.setOnClickListener(new View.OnClickListener(){ @Override public void onClick(View v) { Torgb(); } }); } private void Togray(){ Bitmap bitmap = BitmapFactory.decodeResource(getResources(),R.drawable.im_j20); Mat src = new Mat(); Mat dst = new Mat(); Utils.bitmapToMat(bitmap,src); Imgproc.cvtColor(src,dst,Imgproc.COLOR_BGR2GRAY); Utils.matToBitmap(dst,bitmap); iv.setImageBitmap(bitmap); src.release(); dst.release(); } private void Torgb(){ Bitmap bitmap = BitmapFactory.decodeResource(getResources(),R.drawable.im_j20); iv.setImageBitmap(bitmap); } }
界面效果:【GRAY 显示灰度图】【RGB 显示原图】
- opencv 图片基本处理(灰度化,反色,二值化,膨胀腐蚀以及ROI的copy等)
- python 读取、保存、二值化、灰度化图片+opencv处理图片的方法
- Android平台下使用OpenCV灰度化图片的两种方式
- 在Android中使用OpenCv 来处理图片
- Android opencv 图片处理
- Android OpenCV简单图片处理,不需要安装Manager,不需要ndk,简单实用
- Android Jni OpenCV图片灰度处理
- python 读取、保存、二值化、灰度化图片+opencv处理图片的方法
- android中opencv操作图片像素----之图像灰度处理
- Android的TextView/EditText使用CharacterStyle&SpannableString来处理图片显示、字体样式、超链接等
- Android ListView从网络获取图片及文字显示---图片缓存,多线程处理
- Android 图片处理
- OpenCV for Python [1].图片读入、显示、保存
- android图片的缩放、圆角处理
- Android通过颜色矩阵(ColorMatrix)和坐标变换矩阵(Matrix)处理图片
- android图片处理之ImageView的ScaleType
- Android Handler 异步消息处理机制的妙用 创建强大的图片加载类
- ANDROID中使用开源框架FRESCO处理图片
- 比较靠谱的Android图片压缩处理机制,防止OOM
- android 图片倒影处理