OpenCV On Android Studio 配置(不需要安装opencvManager apk)灰度化演示
2017年07月06日 16:01:33
阅读数:1087
1.下载好Opencv SDK (注意下载的版本,好像较低版本的不支持不安装Opencv Manager apk,就可以使用,像我之前用的2.4.11的就不支持,同样的配置在3.2.0就可以使用)
下载的链接:http://download.youkuaiyun.com/detail/kangda/9815621
2.将Opencv SDK中的java包作为Module导入到项目中



3.导入之后会出现以下错误(因为还没有进行Gradle 同步)
将app目录下的build.gradle文件和openCVLibrary320 module 下的build.gradle以下这几项改成一致(改成和app目录下build.grale文件一样即可)
compileSdkVersion
buildToolsVersion
minSdkVersion
targetSdkVersion
然后sync一下。然后 将加入的openCVLibrary Module 加入依赖。



4.将Opencv SDK 包下SDK目录下的native文件夹下的lib文件夹复制到app目录下src下的main文件目录下,并改名为jniLibs


5.在需要用到opencv的Activity下 需要进行初始化,用以下代码即可
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
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_2_0, this, mLoaderCallback);
} else {
Log.d(TAG, "OpenCV library found inside package. Using it!");
mLoaderCallback.onManagerConnected(LoaderCallbackInterface.SUCCESS);
}
}
6.在MainActivity上测试一下 查看打印出来的Log 不用manager apk 也能加载成功啦,可以开始使用opencv啦

7.使用opencv的功能 二值化
布局文件:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
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"
tools:context="com.unistrong.yang.opencvfacedetection.MainActivity">
<ImageView
android:id="@+id/iv_image"
android:layout_marginTop="50dp"
android:layout_centerHorizontal="true"
android:layout_width="300dp"
android:layout_height="300dp"
android:scaleType="centerCrop"/>
<Button
android:layout_marginTop="40dp"
android:layout_below="@+id/iv_image"
android:layout_centerHorizontal="true"
android:id="@+id/bt_test"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="灰度化"
/>
</RelativeLayout>
MainActivity:
public class MainActivity extends AppCompatActivity {
private final String TAG = "MainActivity";
private ImageView iv_image;
private Button bt_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
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_2_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);
iv_image = (ImageView) findViewById(R.id.iv_image);
bt_test = (Button) findViewById(R.id.bt_test);
final Bitmap bitmap =((BitmapDrawable)getResources().getDrawable(R.drawable.image)).getBitmap();
iv_image.setImageBitmap(bitmap);
bt_test.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Bitmap grayBitmap = toGrayByOpencv(bitmap);
iv_image.setImageBitmap(grayBitmap);
}
});
}
/**
* 灰度化
* @param srcBitmap
* @return
*/
public Bitmap toGrayByOpencv(Bitmap srcBitmap){
Mat mat = new Mat();
Utils.bitmapToMat(srcBitmap,mat);
Mat grayMat = new Mat();
Imgproc.cvtColor(mat, grayMat, Imgproc.COLOR_BGRA2GRAY, 1);
Utils.matToBitmap(grayMat,srcBitmap);
return srcBitmap;
}
}
效果图:


好啦,opencv的演示程序就到这里啦,opencv是个非常强大的开源库,非常值得我们深入学习。谢谢
本文详细介绍了如何在Android Studio中配置并使用OpenCV库,无需安装额外的OpenCV Manager apk,实现图像灰度化和二值化处理。从下载合适版本的OpenCV SDK开始,到模块导入、Gradle配置、库文件复制、初始化代码,直至实现功能测试,提供了一步一步的指导。
4857

被折叠的 条评论
为什么被折叠?



