Android Studio配置和使用OpenCV3.x,不需要OpencvManager
转载声明,本文转自CSDN:http://blog.csdn.net/qq_22033759/article/details/51156121
ps:本来在贴吧上有人问,想自己写的,但时间有限,当初自己也是学习了这个CSDN博文后配置的,一为了收藏,二为了让更多朋友搜索到,就转载一下。。。
以下为转载原文:
我所使用的opencv版本为3.1,Android Studio版本为2.0
先从opencv官网下载对应的版本的安卓的opencv的sdk 解压出来路径不要有中文
然后在Android Studio里创建一个安卓项目,在根目录创建一个文件夹,命名为libraries
然后把sdk结业目录下的 sdk\Java文件夹复制到libraries文件夹内,重命名为opencv
接着在该opencv目录下创建一个build.gradle,内容为
apply plugin: 'com.android.library' buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:2.0.0'
}
} android {
compileSdkVersion 23
buildToolsVersion "23.0.3" defaultConfig {
minSdkVersion 21
targetSdkVersion 23
versionCode 2480
versionName "3.1.0"
} sourceSets {
main {
manifest.srcFile 'AndroidManifest.xml'
java.srcDirs = ['src']
resources.srcDirs = ['src']
res.srcDirs = ['res']
aidl.srcDirs = ['src']
}
}
}
需要依照需求修改对应的sdk版本
然后在修改下项目的settings.gradle ,添加一行
include ':libraries:opencv'
要选择Sync Now
然后右键项目名,选择Open Module Settings,选择app然后点Dependencies,再点击加号,选第三个,把opencv添加进去
添加好后如图:
接着在/app/src/main/下创建一个文件夹叫jniLibs
把上图目录下的所有文件夹都复制到jniLibs中去。
到这就算是配置完全了。
接下来就是使用。
一定要先添加static{ System.loadLibrary(“opencv_java3”); }
我测试的代码:(界面有一个ImageView和一个Button)
package com.example.chengk.opencvexamples; import android.graphics.Bitmap;
import android.graphics.drawable.BitmapDrawable;
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.Utils;
import org.opencv.core.Mat;
import org.opencv.imgproc.Imgproc; public class MainActivity extends AppCompatActivity {
static{ System.loadLibrary("opencv_java3"); }
int i=0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ImageView imageView = (ImageView)findViewById(R.id.imageView);
final Bitmap bitmap = ((BitmapDrawable) getResources().getDrawable(R.drawable.aa1)).getBitmap();
imageView.setImageBitmap(bitmap); final Button button2 = (Button)findViewById(R.id.button);
button2.setText("转换");
button2.setOnClickListener(new Button.OnClickListener()
{
@Override
public void onClick(View v)
{
i++;
Mat rgbMat = new Mat();
Mat grayMat = new Mat();
//获取lena彩色图像所对应的像素数据
Utils.bitmapToMat(bitmap, rgbMat);
//将彩色图像数据转换为灰度图像数据并存储到grayMat中
Imgproc.cvtColor(rgbMat, grayMat, Imgproc.COLOR_RGB2GRAY);
//创建一个灰度图像
Bitmap grayBmp = Bitmap.createBitmap(bitmap.getWidth(), bitmap.getHeight(), Bitmap.Config.RGB_565);
//将矩阵grayMat转换为灰度图像
Utils.matToBitmap(grayMat, grayBmp);
ImageView imageView = (ImageView)findViewById(R.id.imageView);
if(i%2==1)
imageView.setImageBitmap(grayBmp);
else
imageView.setImageBitmap(bitmap);
} });
}
}
运行效果图:
点击按钮前
点击按钮后
这么做确实是可行的,但空间占用太大,我这个程序占用空间将近50M,还在寻找其他更好的办法,找到了继续更新。
最新文章
- opencv从txt文本读取像素点并显示
- ubuntu14.04计划任务无法执行
- NFS挂载操作指南
- java的string常用操作
- c#部分---结构体;
- Winform-控制边框显示属性
- RxJava 复杂场景 Schedulers调度
- Android开发有用技巧:推断当前系统语言版本号
- C# 鼠标事件弹框
- Windows显示不了磁盘
- SpringBoot-SpringMvc的Interceptor拦截器配置
- HBase之行信息简析
- linux异步IO的两种方式【转】
- Convert List<;Entity>; to Json String.
- 能不能在FOR循环中执行SQL?
- MySQL--REPALCE INTO操作
- Java -- 获取MAC地址
- PHP 使用协同程序实现合作多任务
- dede后台一片空白
- java并发编程:线程安全管理类--原子包--java.util.concurrent.atomic
热门文章
- Devexpress GridView内嵌dx:ASPxGridLookup取得控件值乱跳解决方案
- Html5 学习系列(五)Canvas绘图API快速入门(2)
- Multiple MySQL running but PID file could not be found
- CSS3与页面布局学习总结
- duilib进阶教程 -- Container控件的bug (14)
- paip.powerdesign cdm pdm文件 代码生成器 java web 页面 实现
- paip.编程语言方法重载实现的原理及python,php,js中实现方法重载
- Maven学习总结(八)——使用Maven构建多模块项目
- 从此爱上iOS Autolayout
- Cocos2dx.3x入门三部曲-Hello Game项目创建(二)