在Android Studio上搭建OpenCV 开发环境

        这里默认你已经成功安装了Android Studio IDE;我这里使用的AS版本是3.0.1;截止目前,AS稳定版本已经升级至3.2.1,至于版本间的区别,这里不多做区分和说明。如果对于AS的下载和安装有问题也可以参加我的关于AS介绍的博客。下面就来看看如何搭建OpenCV的开发环境。

 

1,环境搭建

第一步:下载SDK

下载地址

点击下图中的红色方框中SDK,也即最新发布的openCV3.4.4

 

第二步:解压与分析

下载完成解压之后的目录如下:

其中:

  • apk文件夹中存储的是对应不同cpu的代理(manager)应用
  • samples中存储的是官方给出Demo源码示例,但是遗憾的是这里都是Eclipse项目
  • sdk中存储的就是我们接下来搭建环境需要使用的一些材料

下面就来简单看一下sdk中究竟有什么东西:

  • etc中存放的是训练好的级联分类器数据(HAAR和LBP)
  • java中存放的是我们接下来使用的Android SDK
  • native中存放基于c/c++编译好的本地库文件,JNI层开发需要的头文件和CMake文件

第三步:导入SDK

(1)创建一个新的工程,点击“File”-->"New"-->"Import Module",然后选择上图中的java文件夹点击OK“”即可;待工程构建完成之后,项目结构如下图所示:

 

(2)把native文件夹中libs目录下面的所以文件copy到我们项目的libs目录中

(3)到目前为止,我们的工作也快结束了,但是还需要修改一下gradle文件

  • 在上图中的build.gradle(Module:app)中最外层添加如下代码:
task nativeLibsToJar(type: Jar, description: 'create a jar archive of the native libs') {
    destinationDir file("$buildDir/native-libs")
    baseName 'native-libs'
    from fileTree(dir: 'libs', include: '**/*.so')
    into 'lib/'
}

tasks.withType(JavaCompile) {
    compileTask -> compileTask.dependsOn(nativeLibsToJar)
}
  • 在我们导入上面Module的时候,上一步的gradle文件还会添加如下依赖(自动添加):
 implementation project(':openCVLibrary344')
  • 此外,我们还需要在依赖中加载libs目录的文件
 implementation fileTree(include: ['*.jar'], dir: 'libs')
 implementation fileTree(dir: "$buildDir/native-libs", include: 'native-libs.jar')
 implementation fileTree(dir: 'libs', include: ['*.jar'])

这样,整个环境就算搭建完成了,到后面NDK相关开发的时候,还会去介绍相关的环境搭建,这里就先不多说了,还是来看看一下环境是否搭建成功了吧。

 

2,校验

还是使用一个别人举的例子也是一个很简单的API调用--图片的灰度化;先看一下效果示意图:

 

布局activity_test.xml代码:

<?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.hfut.operationopencvmain.TestActivity">

    <LinearLayout
        android:gravity="center_horizontal"
        android:layout_width="match_parent"
        android:layout_height="wrap_content">
    <ImageView
        android:id="@+id/test_image"
        android:layout_width="400dp"
        android:layout_height="400dp" />
    </LinearLayout>

    <Button
        android:layout_marginTop="10dp"
        android:text="灰度图片"
        android:onClick="grayImage"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />

</LinearLayout>

TestActivity.java代码:

package com.hfut.operationopencvmain;

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.ImageView;

import org.opencv.android.OpenCVLoader;
import org.opencv.android.Utils;
import org.opencv.core.Mat;
import org.opencv.imgproc.Imgproc;

/**
 * @author why
 * @date 2018-11-26 23:00:06
 */
public class TestActivity extends AppCompatActivity {

    private ImageView imageView;
    private static final String TAG = "TestActivity";


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_test);

        boolean status = OpenCVLoader.initDebug();
        if (status) {
            Log.e(TAG, "onCreate: Succese");
        } else {
            Log.e(TAG, "onCreate: Failed");
        }
        imageView = findViewById(R.id.test_image);
        imageView.setImageDrawable(getResources().getDrawable(R.drawable.test));

    }

    public void grayImage(View view) {
        Mat src = new Mat();
        Mat dst = new Mat();
        Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.test);
        Utils.bitmapToMat(bitmap, src);
        Imgproc.cvtColor(src, dst, Imgproc.COLOR_BGR2GRAY);
        Utils.matToBitmap(dst, bitmap);
        imageView.setImageBitmap(bitmap);
        //如果不用,直接释放资源
        //src.release();
        //dst.release();
    }
}

好了,到这里就基本介绍完了,整个的环境搭建还是很简单的;但是如果你尝试着把下载下来的samples里面的Eclipse项目移植到AS中并且能成功的在设备上运行起来还是要费一点功夫的,这个在后面会介绍其中的一些坑。

下一篇:关于OpenCV的主要信息基本介绍

注:欢迎扫码关注

  • 5
    点赞
  • 55
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
搭建 OpenCV 开发环境需要以下步骤: 1. 安装必要的依赖项 打开终端并执行以下命令: ``` sudo apt-get update sudo apt-get upgrade sudo apt-get install build-essential cmake git pkg-config libgtk-3-dev \ libavcodec-dev libavformat-dev libswscale-dev libv4l-dev \ libxvidcore-dev libx264-dev libjpeg-dev libpng-dev libtiff-dev \ gfortran openexr libatlas-base-dev python3-dev python3-numpy \ libtbb2 libtbb-dev libdc1394-22-dev libopenexr-dev \ libgstreamer-plugins-base1.0-dev libgstreamer1.0-dev ``` 2. 下载 OpenCV 在终端中执行以下命令: ``` cd ~ git clone https://github.com/opencv/opencv.git cd opencv git checkout 4.5.2 ``` 3. 编译和安装 OpenCV 在终端中执行以下命令: ``` cd ~/opencv mkdir build cd build cmake -D CMAKE_BUILD_TYPE=RELEASE \ -D CMAKE_INSTALL_PREFIX=/usr/local \ -D INSTALL_C_EXAMPLES=ON \ -D INSTALL_PYTHON_EXAMPLES=ON \ -D OPENCV_GENERATE_PKGCONFIG=YES \ -D WITH_TBB=ON \ -D WITH_V4L=ON \ -D WITH_QT=OFF \ -D WITH_OPENGL=ON \ -D WITH_CUDA=OFF \ -D BUILD_EXAMPLES=ON .. ``` 编译后,在终端中执行以下命令进行安装: ``` make -j$(nproc) sudo make install sudo ldconfig ``` 4. 验证 OpenCV 安装 创建一个名为 `test.cpp` 的文件,内容如下: ``` #include <opencv2/opencv.hpp> using namespace cv; int main() { Mat img = imread("test.jpg"); imshow("test", img); waitKey(0); return 0; } ``` 将 `test.jpg` 文件放在同一个目录下,然后在终端中执行以下命令: ``` g++ test.cpp -o test `pkg-config --cflags --libs opencv4` ./test ``` 如果一切正常,应该会看到 `test.jpg` 文件被打开并显示在屏幕上。 以上就是在 Ubuntu20.04 上搭建 OpenCV 开发环境的步骤。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值