国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

學(xué)習(xí)筆記—Android studio導(dǎo)入OpenCV配置使用

這篇具有很好參考價(jià)值的文章主要介紹了學(xué)習(xí)筆記—Android studio導(dǎo)入OpenCV配置使用。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

Android導(dǎo)入OpenCV配置使用

1.下載OpenCV-android-sdk

官網(wǎng)下載sdk,打開(kāi)opencv官網(wǎng),點(diǎn)擊Android,完成后解壓
https://opencv.org/
學(xué)習(xí)筆記—Android studio導(dǎo)入OpenCV配置使用
解壓后,文件夾下有這些文件

  • samples Android代碼工程
  • sdk 包含opencv的Java的接口和JNI接口等
    學(xué)習(xí)筆記—Android studio導(dǎo)入OpenCV配置使用

2.新建工程

打開(kāi)Android studio,選擇模板,這時(shí)選擇最后一項(xiàng)Native C++,然后進(jìn)入配置界面。
學(xué)習(xí)筆記—Android studio導(dǎo)入OpenCV配置使用

  • 這里注意你下載的Android-sdk版本來(lái)選擇API

學(xué)習(xí)筆記—Android studio導(dǎo)入OpenCV配置使用

  • 選擇C++14,finish

學(xué)習(xí)筆記—Android studio導(dǎo)入OpenCV配置使用

3.環(huán)境配置

  1. 將OpenCV庫(kù)作為Module導(dǎo)入。具體步驟為:File->New->Import Module,然后將OpenCV-android-sdk\sdk目錄導(dǎo)入,最好順便將模塊名改成opencv+版本號(hào)。如下圖,然后Next->Finish。
    學(xué)習(xí)筆記—Android studio導(dǎo)入OpenCV配置使用學(xué)習(xí)筆記—Android studio導(dǎo)入OpenCV配置使用
  2. 修改OpenCV下的gradle文件, apply plugin: 'com.android.library,并將API改為與app一致
    學(xué)習(xí)筆記—Android studio導(dǎo)入OpenCV配置使用
  3. 添加依賴(lài),菜單欄選擇File->Project Structure,在Dependencies選項(xiàng)中選擇app,點(diǎn)擊+,選擇Module dependency,如下圖:
    學(xué)習(xí)筆記—Android studio導(dǎo)入OpenCV配置使用
    勾選OpenCV,點(diǎn)擊OK,等待同步
    學(xué)習(xí)筆記—Android studio導(dǎo)入OpenCV配置使用
  4. 新建jinLibs文件夾, 右鍵main,選擇New-Folder-JNI Folder,如下圖,并改名為jniLibs
    學(xué)習(xí)筆記—Android studio導(dǎo)入OpenCV配置使用學(xué)習(xí)筆記—Android studio導(dǎo)入OpenCV配置使用
  • 打開(kāi)解壓縮后的opencv-android-sdk文件,將sdk\native\jni\include文件夾下的opencv2文件夾復(fù)制到cpp下將sdk\native\libs下的文件夾復(fù)制到j(luò)niLibs下,如下圖
    學(xué)習(xí)筆記—Android studio導(dǎo)入OpenCV配置使用
    學(xué)習(xí)筆記—Android studio導(dǎo)入OpenCV配置使用
    學(xué)習(xí)筆記—Android studio導(dǎo)入OpenCV配置使用
  1. 配置參數(shù),打開(kāi)app的gradle,添加sourceSets
sourceSets {
        main{
            jni.srcDirs = ['src/main/jniLibs']
        }
    }

在externalNativeBuild下添加以下代碼

externalNativeBuild {
            cmake {
                cppFlags '-std=c++14 -frtti -fexceptions'
                abiFilters 'armeabi-v7a', 'arm64-v8a', 'x86', 'x86_64'
                arguments '-DANDROID_STL=c++_shared'
            }
        }

這時(shí)環(huán)境就算配置好了,接下來(lái)用一個(gè)簡(jiǎn)單的灰度化來(lái)驗(yàn)證一下

灰度化

java代碼
package com.example.myandroidopencv;

import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;

import android.content.ContentResolver;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.net.Uri;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.TextView;

import com.example.myandroidopencv.databinding.ActivityMainBinding;

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

import java.io.File;
import java.io.FileNotFoundException;

public class MainActivity extends AppCompatActivity implements View.OnClickListener {
    private ImageView img;
    private Button btn_load, btn_gray;
    private Bitmap bitmap;

    // Used to load the 'myandroidopencv' library on application startup.
    static {
        System.loadLibrary("myandroidopencv");
    }

    private ActivityMainBinding binding;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        binding = ActivityMainBinding.inflate(getLayoutInflater());
        setContentView(binding.getRoot());

        img = findViewById(R.id.img);
        btn_load = findViewById(R.id.btn_load);
        btn_gray = findViewById(R.id.btn_gray);

        btn_load.setOnClickListener(this);
        btn_gray.setOnClickListener(this);

    }

    /**
     * A native method that is implemented by the 'myandroidopencv' native library,
     * which is packaged with this application.
     */
    public native String stringFromJNI();

    @Override
    public void onClick(View view) {
        switch (view.getId()){
            case R.id.btn_load:
                loadImg();
                break;
            case R.id.btn_gray:
                doChgGray();
                break;
        }
    }
    private void loadImg(){
        Intent intent = new Intent();
        intent.setType("image/*");

        intent.setAction(Intent.ACTION_GET_CONTENT);
        startActivityForResult(intent,1);
    }
    private void doChgGray(){
        if (bitmap==null){
            return;
        }
        Bitmap bit = bitmap.copy(Bitmap.Config.ARGB_8888,false);
        Mat src = new Mat(bit.getHeight(), bit.getWidth(), CvType.CV_8UC(3));
        Utils.bitmapToMat(bit,src);
        Imgproc.cvtColor(src,src,Imgproc.COLOR_BGR2GRAY);
        Utils.matToBitmap(src,bitmap);
        Message message = new Message();
        message.what = 1;
        handler.sendMessage(message);
    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
        //用戶(hù)操作完成,結(jié)果返回碼是-1
        if (resultCode==RESULT_OK){
            Uri uri = data.getData();
            Log.e("uri",uri.toString());
            ContentResolver cr = this.getContentResolver();
            try {
                bitmap = BitmapFactory.decodeStream(cr.openInputStream(uri));
                img.setImageBitmap(bitmap);
            }catch(FileNotFoundException ex){
                Log.e("Exception",ex.getMessage(),ex);
            }
        }else{
            //操作錯(cuò)誤,或沒(méi)有選擇圖片
            Log.i("MainActivity", "操作錯(cuò)誤");
        }
        super.onActivityResult(requestCode, resultCode, data);
    }

    @Override
    protected void onResume() {
        super.onResume();
        if (!OpenCVLoader.initDebug()){
            Log.i("cv","未找到內(nèi)部的opencv庫(kù),使用OpenCV Manager進(jìn)行初始化");
        }else {
            Log.i("cv","發(fā)現(xiàn)了內(nèi)置的opencv庫(kù),使用它來(lái)進(jìn)行操作");
        }
    }

    Handler handler = new Handler(){
        @Override
        public void handleMessage(@NonNull Message msg) {
            super.handleMessage(msg);

            switch (msg.what){
                case 1:
                    img.setImageBitmap(bitmap);
                    break;
            }
        }
    };
}
頁(yè)面布局代碼
<?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=".MainActivity">

    <ImageView
        android:id="@+id/img"
        android:layout_width="match_parent"
        android:layout_height="300dp"/>


    <LinearLayout
        android:paddingTop="250dp"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal">
        <Button
            android:id="@+id/btn_load"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="加載圖片"
            android:textSize="25sp"/>
        <Button
            android:id="@+id/btn_gray"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="灰度化"
            android:textSize="25sp"/>
    </LinearLayout>




</LinearLayout>

學(xué)習(xí)筆記—Android studio導(dǎo)入OpenCV配置使用
學(xué)習(xí)筆記—Android studio導(dǎo)入OpenCV配置使用文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-469032.html

到了這里,關(guān)于學(xué)習(xí)筆記—Android studio導(dǎo)入OpenCV配置使用的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶(hù)投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • Android Studio Electric Eel 2022.1.1 Patch 2 導(dǎo)入opencv 4.5,并實(shí)現(xiàn)圖片灰度變換和圖片疊加

    Android Studio Electric Eel 2022.1.1 Patch 2 導(dǎo)入opencv 4.5,并實(shí)現(xiàn)圖片灰度變換和圖片疊加

    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: 導(dǎo)入opencv sdk: File-New-Import Module 添加工程依賴(lài):File-Project Structure, sdk為opencv sdk. plugins { id ‘com.android.application’ version ‘7.4.2’ apply false id ‘com.android.library’

    2024年02月05日
    瀏覽(29)
  • Android系統(tǒng)源碼如何導(dǎo)入android studio中使用以及導(dǎo)入過(guò)程中遇到的問(wèn)題

    Android系統(tǒng)源碼如何導(dǎo)入android studio中使用以及導(dǎo)入過(guò)程中遇到的問(wèn)題

    一、在源碼根目錄中編譯出android.ipr和android.iml android.ipr:整個(gè)系統(tǒng)源碼的工程項(xiàng)目,android studio上直接打開(kāi)即可查看源碼 android.iml:工程中的具體配置信息 二、安裝android studio,打開(kāi)工程項(xiàng)目android.ipr 三、配置sdk 廢話不多說(shuō),直接開(kāi)始 進(jìn)入源碼根目錄 之后選擇要編譯的項(xiàng)目

    2024年02月12日
    瀏覽(22)
  • OpenCV(一):Android studio jni配置OpenCV(親測(cè)有效,保姆級(jí))

    OpenCV(一):Android studio jni配置OpenCV(親測(cè)有效,保姆級(jí))

    目錄 1.下載OpenCV的SDK 2.創(chuàng)建Android Native C++項(xiàng)目 3.Android項(xiàng)目中導(dǎo)入OpenCV工程 4.導(dǎo)入OpenCV的庫(kù)文件 5.實(shí)現(xiàn)opencv高斯模糊圖像處理的demo 要在Android Studio中配置使用OpenCV庫(kù)的C++方法,需要完成以下步驟: 1.下載OpenCV的SDK 首先,您可以從OpenCV官方網(wǎng)站(Releases - OpenCV )下載適用于And

    2024年02月03日
    瀏覽(46)
  • Android studio配置OpenCV的JNI接口,實(shí)現(xiàn)C++代碼編程

    Android studio配置OpenCV的JNI接口,實(shí)現(xiàn)C++代碼編程

    目錄 一、下載OpenCV-android-sdk 二、新建項(xiàng)目 三、導(dǎo)入OpenCV包 ?四、配置OpenCV的JNI接口,拷貝OpenCV所需的頭文件和庫(kù)文件 五、修改Cmake文件 ?六、配置app的build.gradle文件 ?七、測(cè)試 OpenCV官網(wǎng)地址:https://opencv.org/? 點(diǎn)擊Library--Releases,下載Android版本,解壓得到?OpenCV-android-sdk文件

    2024年02月10日
    瀏覽(24)
  • 【圖文詳解】Android Studio(新版本) 配置OpenCV庫(kù),解決出現(xiàn)的各種問(wèn)題

    【圖文詳解】Android Studio(新版本) 配置OpenCV庫(kù),解決出現(xiàn)的各種問(wèn)題

    寫(xiě)這篇文章的目的就是記錄自己在配置OpenCV庫(kù)時(shí)遇到的問(wèn)題。在網(wǎng)上查找相關(guān)資料時(shí),發(fā)現(xiàn)很多Android Studio都是老版本,并且出現(xiàn)的問(wèn)題都不能被解決。自己在配置過(guò)程中出現(xiàn)的問(wèn)題都進(jìn)行記錄下來(lái)并一一解決。 點(diǎn)擊 New Project 選擇界面 配置相關(guān)參數(shù) 創(chuàng)建成功 確保創(chuàng)建成功(

    2024年02月03日
    瀏覽(92)
  • 【環(huán)境配置】Android-Studio-OpenCV-JNI以及常見(jiàn)錯(cuò)誤 ( 持續(xù)更新 )

    【環(huán)境配置】Android-Studio-OpenCV-JNI以及常見(jiàn)錯(cuò)誤 ( 持續(xù)更新 )

    最近一個(gè)項(xiàng)目要編譯深度學(xué)習(xí)的庫(kù),需要用到 opencv 和 JNI,本文檔用于記錄環(huán)境配置中遇到的常見(jiàn)錯(cuò)誤以及解決方案 解決辦法: 刪除文件 .idea/gradle.xml 和 .idea/workspace.xml , 重新編譯; 解決辦法:Invalid Gradle JDK configuration found 原因是NDK版本過(guò)高,跟當(dāng)前的AndroidStudio版本不匹配

    2024年02月11日
    瀏覽(19)
  • Android Studio開(kāi)發(fā)之路(七)CameraX&&Opencv的使用

    Android Studio開(kāi)發(fā)之路(七)CameraX&&Opencv的使用

    工作目標(biāo):做一個(gè)顯示單通道圖像的相機(jī),實(shí)現(xiàn)預(yù)覽和拍照。 原本是調(diào)用opencv-android里邊的JavaCamera2View來(lái)實(shí)現(xiàn),這個(gè)用起來(lái)比較方便,它提供了集成好的相機(jī)預(yù)覽界面,并且提供了幀處理函數(shù)。但是問(wèn)題是用opencv相機(jī)獲取到的幀圖片分辨率不高,達(dá)不到目標(biāo)效果。 而CameraX作

    2024年01月21日
    瀏覽(21)
  • 《Android 移動(dòng)應(yīng)用基礎(chǔ)教程(Android Studio)(第2版)》【學(xué)習(xí)筆記】【2023春】【附源碼】

    《Android 移動(dòng)應(yīng)用基礎(chǔ)教程(Android Studio)(第2版)》【學(xué)習(xí)筆記】【2023春】【附源碼】

    《Android 移動(dòng)應(yīng)用基礎(chǔ)教程(Android Studio)(第2版)》黑馬程序員 源代碼 Android——六大基本布局總結(jié)/CSDN@小馬 同學(xué) 【Android】線性布局(LinearLayout)最全解析/CSDN@Teacher.Hu 一個(gè)不錯(cuò)的計(jì)算器界面?? Android Studio App LinearLayout多層布局嵌套/CSDN@pythontojava 一個(gè)簡(jiǎn)單的布局?? Andro

    2024年02月01日
    瀏覽(29)
  • 使用Android Studio配置已有工程

    使用Android Studio配置已有工程

    Download Android Studio App Tools - Android Developers Android Studio provides app builders with an integrated development environment (IDE) optimized for Android apps. Download Android Studio today. https://developer.android.google.cn/studio/ 安裝完成,其他配置詳見(jiàn): Android Studio安裝和使用教程(全文圖解)_android studio安裝教程_朝歌

    2024年02月16日
    瀏覽(22)
  • [Android Studio] 導(dǎo)入安卓Android項(xiàng)目教程

    [Android Studio] 導(dǎo)入安卓Android項(xiàng)目教程

    A項(xiàng)目指:要導(dǎo)入的項(xiàng)目;B項(xiàng)目指自己電腦上可以運(yùn)行的項(xiàng)目 根據(jù)步驟一步一步來(lái),別急。 將要導(dǎo)入的項(xiàng)目(簡(jiǎn)稱(chēng)為A)根目錄下的這些文件刪掉:.gradle、.idea 、.iml后綴的文件、 local.properties 進(jìn)入app文件夾,將這些文件刪掉:build、.iml后綴的文件 打開(kāi)一個(gè)你在自己電腦上可

    2024年02月04日
    瀏覽(19)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包