• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >Android > Android Studio-—使用OpenCV的配置方法和demo以及开发过程中遇到的问题解决,studio-opencv

Android Studio-—使用OpenCV的配置方法和demo以及开发过程中遇到的问题解决,studio-opencv

作者:网友 字体:[增加 减小] 来源:互联网 时间:2017-05-26

网友通过本文主要向大家介绍了Android Studio-—使用OpenCV的配置方法和demo以及开发过程中遇到的问题解决,studio-opencv等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

Android Studio-—使用OpenCV的配置方法和demo以及开发过程中遇到的问题解决,studio-opencv


前提:

      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文件夹拷贝到你的安卓项目下,即

分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • Android Studio-—使用OpenCV的配置方法和demo以及开发过程中遇到的问题解决,studio-opencv

相关文章

  • 2017-05-26Json生成与解析,Json生成解析
  • 2017-05-26For each循环中使用remove方法。,eachremove
  • 2017-05-26Android Studio安装配置、环境搭建详细步骤及基本使用,android安装配置
  • 2017-05-26Android Doze模式源码分析,androiddoze
  • 2017-05-26ubuntu vncserver搭建
  • 2017-05-26MySQL高可用组件MHA参数详解
  • 2017-05-26IDA动态调试Android的DEX文件
  • 2017-05-26类似微信朋友圈,点击+号图片,可以加图片,信朋友圈
  • 2017-05-26我的第一节Android课,第一节Android课
  • 2017-05-26安卓开发 第一篇 关于依赖注入框架dagger2的使用和理解

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • 修改Android系统关机动画,android关机动画
    • android下拉选择框spinner,android下拉spinner
    • Android广播机制
    • androidStudio通过svn进行版本控制,androidstudiosvn
    • 安卓开源项目周报0117,安卓开源项目0117
    • 材料设计---Design,设计---design
    • 好玩的Handler,好玩Handler
    • React Native Android入门实战及深入源码分析系列(2)——React Native源码编译
    • 关于如何在安卓的百度地图开发里面简单实现持续定位,安卓地图
    • [Android]Animation 动画介绍和实现,androidanimation

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有