Android Studio-—使用OpenCV的配置方法和demo以及开发过程中遇到的问题解决
2016-12-09 15:50
1111 查看
前提:
1.安装Android Studio(过程略)
2.官网下载OpenCV for Android 网址:http:opencv.org/downloads.html 我下载的是下图的版本
3.将下载好的OpenCV for Android解压到固定文件夹
4.新建一个android项目(就新建一个就好,以后用到)
以上的步骤基本没有什么问题(除了打开网页的时候网速很慢。。。)
Android Studio导入OpenCV:
1.点击File-new-import Module如图:
2.Source directory中填写内容:找到步骤1中解压OpenCV for Android的位置OpenCV-android-sdk —> sdk—> java直接拷贝,拷贝完毕后会出现Module name(我的因为已经导入过了所以会有感叹号正常情况下点击下一步下一步下一步就好)
上述步骤可能会遇见的错误:导入之后各种bug输出,,,,,我的如下图(只是截取的部分):
解决:导入OpenCV for Android后应该将openCVLibrary310下的build.gradle文件改成和第一步自己新建的android项目下的build.gradle文件相同,然后clean一下,OK
将openCVLibrary310应用到自己的项目:
1.点击File-Project Structure会出现下图:Modules下边找你新建的android项目后点击Dependencies
2.点击右侧加号选第三个Module dependency后选择openCVLibrary310后点击完成
以上完成后你的app就可以使开发openCV了
android使用OpenCV将彩图转化为灰图的例子:
MainActivity.java代码:
对应的xml文件:
这样就够了,然后点击运行。。。。。
呵呵,,运行失败对不对,提醒要要安装opencv manager的apk,,我吧官方demo中所有的apk都安装了,还是提示未安装,,程序不能运行,,,后来想想,实际开发中 需要人脸识别一类的功能,还非得让客户用你的软件的同时还非要安装opencv manager的apk?那用户体验也是没谁了。。。。。。然后就找到了一种不安装这个apk也可以照 常使用OpenCV了
参考网址:http://jingyan.baidu.com/article/60ccbceb53533364cab197db.html
方法如下:
1.把OpenCV sdk for Android文件下F:\OpenCV-android-sdk\sdk\native下的libs文件夹拷贝到你的安卓项目下,即自己的项目\src\main下面,并且将libs改名为 jniLibs
2.将OpenCV-android-sdk\samples\image-manipulations\res\layout下的xml文件拷贝到自己的项目\src\main\res下面
3.将OpenCV-android-sdk\samples\image-manipulations\src\org\opencv\samples\imagemanipulations下的java文件拷到自己的项目\src\main\java\你 MainActivity所在的包名,即和MainActivity同级目录
4.在项目清单文件中为刚才导入的java文件进行配置,加上相应的权限,如图:
接下来运行你的项目,就妥妥的了
我的运行后截图:
最后说说遇到的其他奇葩问题:
1.明明哪里都妥妥的了,资源文件没有问题,就是找不到R文件 clean也找不到,,,,
不择手段的解决方法:手动写 import 你的报名.R 我试了,,OK了。。。。。。。
2.运行app时候出错如图:
解决如图:Enable ADB Integration勾选一下
备忘,希望给大家带来帮助。
1.安装Android Studio(过程略)
2.官网下载OpenCV for Android 网址:http:opencv.org/downloads.html 我下载的是下图的版本
3.将下载好的OpenCV for Android解压到固定文件夹
4.新建一个android项目(就新建一个就好,以后用到)
以上的步骤基本没有什么问题(除了打开网页的时候网速很慢。。。)
Android Studio导入OpenCV:
1.点击File-new-import Module如图:
2.Source directory中填写内容:找到步骤1中解压OpenCV for Android的位置OpenCV-android-sdk —> sdk—> java直接拷贝,拷贝完毕后会出现Module name(我的因为已经导入过了所以会有感叹号正常情况下点击下一步下一步下一步就好)
上述步骤可能会遇见的错误:导入之后各种bug输出,,,,,我的如下图(只是截取的部分):
解决:导入OpenCV for Android后应该将openCVLibrary310下的build.gradle文件改成和第一步自己新建的android项目下的build.gradle文件相同,然后clean一下,OK
将openCVLibrary310应用到自己的项目:
1.点击File-Project Structure会出现下图:Modules下边找你新建的android项目后点击Dependencies
2.点击右侧加号选第三个Module dependency后选择openCVLibrary310后点击完成
以上完成后你的app就可以使开发openCV了
android使用OpenCV将彩图转化为灰图的例子:
MainActivity.java代码:
package com.example.lenovo.myapplication; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.util.Log; import android.view.View; import android.widget.Button; import android.widget.ImageView; import com.example.lenovo.R; 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 { Button btnProcess; Bitmap srcBitmap; Bitmap grayBitmap; ImageView imgHuaishi; private static boolean flag = true; //private static boolean isFirst = true; private static final String TAG = "MainActivity"; //OpenCV库加载并初始化成功后的回调函数 private BaseLoaderCallback mLoaderCallback = new BaseLoaderCallback(this) { @Override public void onManagerConnected(int status) { // TODO Auto-generated method stub switch (status){ case BaseLoaderCallback.SUCCESS: Log.i(TAG, "成功加载"); break; default: super.onManagerConnected(status); Log.i(TAG, "加载失败"); break; } } }; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initUI(); btnProcess.setOnClickListener(new ProcessClickListener()); } public void initUI(){ btnProcess = (Button)findViewById(R.id.btn_gray_process); imgHuaishi = (ImageView)findViewById(R.id.img_huaishi); Log.i(TAG, "initUI sucess..."); } public void procSrc2Gray(){ Mat rgbMat = new Mat(); Mat grayMat = new Mat(); srcBitmap = BitmapFactory.decodeResource(getResources(), R.drawable.text_img); grayBitmap = Bitmap.createBitmap(srcBitmap.getWidth(), srcBitmap.getHeight(), Bitmap.Config.RGB_565); Utils.bitmapToMat(srcBitmap, rgbMat);//convert original bitmap to Mat, R G B. Imgproc.cvtColor(rgbMat, grayMat, Imgproc.COLOR_RGB2GRAY);//rgbMat to gray grayMat Utils.matToBitmap(grayMat, grayBitmap); //convert mat to bitmap Log.i(TAG, "procSrc2Gray sucess..."); } private class ProcessClickListener implements View.OnClickListener { @Override public void onClick(View v) { // TODO Auto-generated method stub // if(isFirst) // { procSrc2Gray(); // isFirst = false; // } if(flag){ imgHuaishi.setImageBitmap(grayBitmap); btnProcess.setText("查看原图"); flag = false; } else{ imgHuaishi.setImageBitmap(srcBitmap); btnProcess.setText("灰度化"); flag = true; } } } @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文件:
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingLeft="16dp" android:paddingRight="16dp" android:paddingTop="16dp" android:paddingBottom="16dp" tools:context="com.example.mytest.MainActivity"> <ImageView android:id="@+id/img_huaishi" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerInParent="true"/> <Button android:id="@+id/btn_gray_process" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@id/img_huaishi" android:layout_centerHorizontal="true" android:text="灰度化"/>" </RelativeLayout>
这样就够了,然后点击运行。。。。。
呵呵,,运行失败对不对,提醒要要安装opencv manager的apk,,我吧官方demo中所有的apk都安装了,还是提示未安装,,程序不能运行,,,后来想想,实际开发中 需要人脸识别一类的功能,还非得让客户用你的软件的同时还非要安装opencv manager的apk?那用户体验也是没谁了。。。。。。然后就找到了一种不安装这个apk也可以照 常使用OpenCV了
参考网址:http://jingyan.baidu.com/article/60ccbceb53533364cab197db.html
方法如下:
1.把OpenCV sdk for Android文件下F:\OpenCV-android-sdk\sdk\native下的libs文件夹拷贝到你的安卓项目下,即自己的项目\src\main下面,并且将libs改名为 jniLibs
2.将OpenCV-android-sdk\samples\image-manipulations\res\layout下的xml文件拷贝到自己的项目\src\main\res下面
3.将OpenCV-android-sdk\samples\image-manipulations\src\org\opencv\samples\imagemanipulations下的java文件拷到自己的项目\src\main\java\你 MainActivity所在的包名,即和MainActivity同级目录
4.在项目清单文件中为刚才导入的java文件进行配置,加上相应的权限,如图:
接下来运行你的项目,就妥妥的了
我的运行后截图:
最后说说遇到的其他奇葩问题:
1.明明哪里都妥妥的了,资源文件没有问题,就是找不到R文件 clean也找不到,,,,
不择手段的解决方法:手动写 import 你的报名.R 我试了,,OK了。。。。。。。
2.运行app时候出错如图:
解决如图:Enable ADB Integration勾选一下
备忘,希望给大家带来帮助。
相关文章推荐
- Android Studio-—使用OpenCV的配置方法和demo以及开发过程中遇到的问题解决
- sofia sip开发六 寻找开发过程中遇到sofia sip库使用问题的解决方法
- Android Studio 使用中遇到的一些问题以及解决方法
- 3D商城服务器开发过程中遇到的问题,原因以及解决方法。。。
- Ubuntu(17.04)使用过程中遇到的问题以及解决方法
- 使用ArcGIS GP服务遇到的问题,原因以及解决方法 - 客户端API开发(Javascript/Flex/Silverlig 转载
- 【Android】android开发过程遇到的问题以及解决方法总结
- 使用MFC过程中遇到的问题以及解决方法(三)
- iOS开发工具-如何使用网络封包分析工具Charles,通过配置proxy对http、https、tcp、udp 等协议的请求响应过程交互信息进行分析、判断、解决我们移动开发中的遇到的各种实际问题。
- 使用MFC过程中遇到的问题以及解决方法(一)
- ubuntu server14.04LTS下手动模拟DNS并配置虚拟主机以及配置过程遇到的问题的解决方法
- 使用MFC过程中遇到的问题以及解决方法(二)
- 开发与部署的讨论以及最近遇到问题及其解决方法(大杂烩)
- SQL Server 2008 安装过程中遇到“性能计数器注册表配置单元一致性”检查失败 问题的解决方法
- 关于ArrayList使用时常遇到的问题以及解决方法
- 在VS2010开发过程中如果遇到类似问题的解决方法
- 在SharePoint中服务器端使用Word编程模型转换PDF遇到的问题以及解决方法
- 【原创】ASP.NET MVC3开发中遇到问题以及解决方法
- 报表开发过程中遇到的问题及解决方法
- 【struts2】开发过程中遇到的需要注意的小问题的原因与解决方法