Skip to content

服务器托管,北京服务器托管,服务器租用-价格及机房咨询

Menu
  • 首页
  • 关于我们
  • 新闻资讯
  • 数据中心
  • 服务器托管
  • 服务器租用
  • 机房租用
  • 支持中心
  • 解决方案
  • 联系我们
Menu

Android Studio Electric Eel 2022.1.1 Patch 2 导入opencv 4.5,并实现图片灰度变换和图片叠加

Posted on 2023年9月19日2023年9月19日 by hackdl

软件版本:

Android Studio Electric Eel 2022.1.1 Patch 2

https://sourceforge.net/projects/opencvlibrary/files/4.5.0/opencv-4.5.0-android-sdk.zip/download

创建工程

with API23:

导入opencv sdk:
File->New->Import Module

添加工程依赖:File->Project Structure, sdk为opencv sdk.

build.gradle(Myopency45)

plugins {
id ‘com.android.application’ version ‘7.4.2’ apply false
id ‘com.android.library’ version ‘7.4.2’ apply false
}

build.gradle(app)

plugins {
id ‘com.android.application’
}

android {
namespace ‘com.michael.myopency45’
compileSdk 33

defaultConfig {
    applicationId "com.michael.myopency45"
    minSdk 23
    targetSdk 33
    versionCode 1
    versionName "1.0"

    testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}

buildTypes {
    release {
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
    }
}
compileOptions {
    sourceCompatibility JavaVersion.VERSION_1_8
    targetCompatibility JavaVersion.VERSION_1_8
}

}

dependencies {

implementation 'androidx.appcompat:appcompat:1.4.1'
implementation 'com.google.android.material:material:1.5.0'
implementation 'androidx.constraintlayout:constraintlayout:2.1.3'
implementation project(path: ':sdk')
testImplementation 'junit:junit:4.13.2'
androidTestImplementation 'androidx.test.ext:junit:1.1.3'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0'

}

build.gradle(SDK)

apply plugin: ‘com.android.library’

def openCVersionName = “4.5.0”
def openCVersionCode = ((4 * 100 + 5) * 100 + 0) * 10 + 0

println “OpenCV: ” +openCVersionName + ” ” + project.buildscript.sourceFile

android {
compileSdkVersion 26

defaultConfig {
    minSdkVersion 21
    targetSdkVersion 26

    versionCode openCVersionCode
    versionName openCVersionName

    externalNativeBuild {
        cmake {
            arguments "-DANDROID_STL=c++_shared"
            targets "opencv_jni_shared"
        }
    }
}

buildTypes {
    debug {
        packagingOptions {
            doNotStrip '**/*.so'  // controlled by OpenCV CMake scripts
        }
    }
    release {
        packagingOptions {
            doNotStrip '**/*.so'  // controlled by OpenCV CMake scripts
        }
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
    }
}
compileOptions {
    sourceCompatibility JavaVersion.VERSION_1_6
    targetCompatibility JavaVersion.VERSION_1_6
}

sourceSets {
    main {
        jniLibs.srcDirs = ['native/libs']
        java.srcDirs = ['java/src']
        aidl.srcDirs = ['java/src']
        res.srcDirs = ['java/res']
        manifest.srcFile 'java/AndroidManifest.xml'
    }
}

externalNativeBuild {
    cmake {
        path (project.projectDir.toString() + '/libcxx_helper/CMakeLists.txt')
    }
}

}

dependencies {
}

activity_main.xml










MainActivity.java

package com.michael.myopency45;

import androidx.appcompat.app.AppCompatActivity;

import android.graphics.Bitmap;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;

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

import java.io.IOException;

public class MainActivity extends AppCompatActivity {

ImageView iv1,iv2,iv3;
Mat srcmat1, srcmat2, dstmat3;
Button bt1,bt2,bt3;
Bitmap bitmap;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    OpenCVLoader.initDebug();
    iv1 = findViewById(R.id.pic1);
    iv2 = findViewById(R.id.pic2);
    iv3 = findViewById(R.id.pic3);
    bt1 = findViewById(R.id.bt1);
    bt2 = findViewById(R.id.bt2);
    bt3 = findViewById(R.id.bt3);
    srcmat1 = new Mat();
    srcmat2 = new Mat();
    dstmat3 = new Mat();

    try {
        srcmat1 = Utils.loadResource(this,R.drawable.pic1);
        srcmat2 = Utils.loadResource(this,R.drawable.pic2);
    } catch (IOException e) {
        throw new RuntimeException(e);
    }

    bt1.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            Imgproc.cvtColor(srcmat1,dstmat3,Imgproc.COLOR_BGRA2GRAY);
            bitmap = Bitmap.createBitmap(dstmat3.width(),dstmat3.height(),Bitmap.Config.ARGB_8888);
            Utils.matToBitmap(dstmat3,bitmap);
            iv3.setImageBitmap(bitmap);
        }
    });

    bt2.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            Core.bitwise_and(srcmat1,srcmat2,dstmat3);
            bitmap = Bitmap.createBitmap(dstmat3.width(),dstmat3.height(),Bitmap.Config.ARGB_8888);
            Utils.matToBitmap(dstmat3,bitmap);
            iv3.setImageBitmap(bitmap);
        }
    });

    bt3.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            Imgproc.cvtColor(srcmat1,dstmat3,Imgproc.COLOR_BGRA2GRAY);
            Imgproc.adaptiveThreshold(dstmat3,dstmat3,255,Imgproc.ADAPTIVE_THRESH_MEAN_C,Imgproc.THRESH_BINARY,13,5);
            bitmap = Bitmap.createBitmap(dstmat3.width(),dstmat3.height(),Bitmap.Config.ARGB_8888);
            Utils.matToBitmap(dstmat3,bitmap);
            iv3.setImageBitmap(bitmap);
        }
    });
}

@Override
protected void onDestroy() {
    super.onDestroy();
    srcmat1.release();
    srcmat2.release();
    dstmat3.release();
}

}

结果:



服务器托管,北京服务器托管,服务器租用 http://www.fwqtg.net

相关推荐: JUC同步锁原理源码解析一 之ReentrantLock

JUC同步锁原理 1.锁的本质 1.什么是锁? ​ 通俗来讲,锁要保证的就是原子性,就是一个代码块不允许多线程同时执行,就是锁。从生活的角度上来说,就比如你要去上厕所,当你在上厕所期间,你会把门锁上,其他人只能排队。不允许多个人同时上厕所。 2.锁的底层实现 …

Related posts:

  1. idc服务器托管收费价格一般是多少
  2. 服务器托管:安全稳定的选择
  3. 深入了解服务器托管经营范围
  4. 大带宽服务器的带宽是多少
  5. 重庆电信服务器托管云空间价格表

服务器托管,北京服务器托管,服务器租用,机房机柜带宽租用

服务器托管

咨询:董先生

电话13051898268 QQ/微信93663045!

上一篇: Android Studio中SQLite的使用,主要介绍sqlite插入和读出图片(ViewBinder)的操作方法 sqlite简介
下一篇: 一种实现Spring动态数据源切换的方法 | 京东云技术团队

最新更新

  • 如何使用 Megatron-LM 训练语言模型
  • Android 开关机POWER键 长按短按代码分析
  • kubernates的集群安装-kubadm
  • java线程池最佳实践
  • 腾讯的认证到底有没有用?怎么样可以通过考试?

随机推荐

  • 数据存储与访问——文件存储读写
  • 网络游戏电信托管服务器维护费用分析
  • ChatGPT的原理分析
  • 小区物业服务器托管工作总结报告
  • 服务器托管注意事项:知乎专家解析

客服咨询

  • 董先生
  • 微信/QQ:93663045
  • 电话:13051898268
  • 邮箱:dongli@hhisp.com
  • 地址:北京市石景山区重聚园甲18号2层

友情链接

  • 服务器托管
  • 机房租用托管
  • 服务器租用托管
©2023 服务器托管,北京服务器托管,服务器租用-价格及机房咨询 京ICP备13047091号-8