cv2_安卓

https://www.jianshu.com/p/6e16c0429044

一、准备
1、下载Android版本的OpenCV并解压
https://opencv.org/releases/
在这里插入图片描述
二、开始
1、Android Studio----新建—Android项目

模板–选择—Empty Activity; 名字例:CVProject
在这里插入图片描述
2、配置NDK
打开Settings—Android SDK----SDK Tools标签—选NDK和CMake—最后击OK
按照软件提示配置。
在这里插入图片描述
在这里插入图片描述
3、导入OpenCV Library
等待Gradle工作完毕------将OpenCV模块-----导入Android项目
3.1导入:File -> New -> Import Module 模块
在这里插入图片描述在这里插入图片描述
3.2修复Gradle Sync错误在这里插入图片描述
3.2.1导入OpenCV库–收到Gradle构建错误。
build.gradle (:OpenCVLibrary) 中的compileSdkVersion和buildToolsVersion改成与build.gradle (:app) 中的一致在这里插入图片描述
3.2.2将build.gradle (:OpenCVLibrary) 中的apply末尾的application改为library**
apply plugin: ‘com.android.application’ 改 apply plugin: ‘com.android.library’**

defaultConfig 删除 applicationId 。只有 Android 应用才能定义 applicationId ,不然编译会报错的

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation fileTree(dir: "$buildDir/native-libs", include: 'native-libs.jar')
    implementation 'androidx.appcompat:appcompat:1.0.2'
    implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'androidx.test.ext:junit:1.1.1'
    androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'
    implementation project(path: ':OpenCVLibrary')
}
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)
}

在这里插入图片描述
在这里插入图片描述
(109条消息) Android Studio各种坑爹之导入model:Library projects cannot set applicationId_kerwinJu的博客-CSDN博客 https://blog.csdn.net/kerwinJu/article/details/53053853?spm=1001.2101.3001.6661.1&utm_medium=distribute.pc_relevant_t0.none-task-blog-2%7Edefault%7ECTRLIST%7Edefault-1.highlightwordscore&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-2%7Edefault%7ECTRLIST%7Edefault-1.highlightwordscore

3.2.3 去掉applicationid "edu.ydk.opencvProject"在这里插入图片描述

4、添加Dependency

在这里插入图片描述
在这里插入图片描述

5、文件复制
5.1复制—粘贴
将下载解压后的文件夹:OpenCV-android-sdk\sdk\native\libs中的所有文件夹复制到自己新建的Android工程下的app\src\main\Libs文件夹中。
E:\andriod\OpenCVproject\app\src\main\Libs
D:\OpenCV-android-sdk\sdk\native\libs 文件复制到在这里插入图片描述
在这里插入图片描述

6、添加所需的权限 : AndroidManifest.xml中加入!
相机权限添加到–AndroidManifest.xml文件中。
提示:在Android 6及更高版本的运行时,请求相机权限。




在这里插入图片描述

在这里插入图片描述
7:Sample
在这里插入图片描述
7.1 activity_main.xml–添加图片、按钮
在这里插入图片描述

<Button
        android:id="@+id/btn_process"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="btn_process"
        tools:ignore="MissingConstraints"
        tools:layout_editor_absoluteX="88dp"
        tools:layout_editor_absoluteY="0dp" />

    <Button
        android:id="@+id/btn_rgb"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="rgb"
        tools:ignore="MissingConstraints" />
    <ImageView
        android:id="@+id/img_tyb"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:scaleType="fitCenter"
        android:src="@drawable/lena"
        android:layout_centerInParent="true"/>

**7.2 ManinActivity.java–添加代码
在这里插入图片描述

package edu.ydk.opencvproject;

import androidx.appcompat.app.AppCompatActivity;

import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.Toast;

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 {

    ImageView iv;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        loadOpenCV();
        iv = findViewById(R.id.img_tyb);
        Button btn_process = findViewById(R.id.btn_process);
        btn_process.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Bitmap bitmap = BitmapFactory.decodeResource(getResources(),R.drawable.lena);
                Mat src = new Mat();
                Mat dst = new Mat();
                Utils.bitmapToMat(bitmap,src);
                Imgproc.cvtColor(src,dst, Imgproc.COLOR_BGR2GRAY);
                Utils.matToBitmap(dst,bitmap);
                iv.setImageBitmap(bitmap);
                src.release();
                dst.release();
            }
        });

        Button btn_rgb = findViewById(R.id.btn_rgb);
        btn_rgb.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Bitmap bitmap = BitmapFactory.decodeResource(getResources(),R.drawable.lena);
                iv.setImageBitmap(bitmap);
            }
        });
    }
    private void loadOpenCV(){
        boolean success = OpenCVLoader.initDebug();
        if(success){
            Toast.makeText(getApplicationContext(), "加载 OpenCV Libraries 成功!", Toast.LENGTH_SHORT).show();
        }else{
            Toast.makeText(getApplicationContext(), "加载 OpenCV Libraries 失败!", Toast.LENGTH_SHORT).show();
        }
    }


}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值