国产成人精品久久免费动漫-国产成人精品天堂-国产成人精品区在线观看-国产成人精品日本-a级毛片无码免费真人-a级毛片毛片免费观看久潮喷

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

使用Android studio3.6的java api方式調(diào)用opencv

瀏覽:51日期:2022-09-03 16:10:17

基本環(huán)境:

Android studio3.6

NDK:r15c(盡量使用該版本)

Opencv3.4.1 android sdk

操作:

(1)新建工程,選擇Empty Activity,工程名為op

(2)File->New->Import Module,然后選擇自己的java-opencv的相對(duì)應(yīng)路徑,比如,D:AndroidOpenCV-android-sdksdkjava

(3)修改openCVlibrary341下面的build.gradle中的,compileSdkVersion,buildToolsVersion,minSdkVersion,targetSdkVersion,使得和自己的工程下面的app/build.gradle的版本一致。

(4)修改openCVlibrary341下面的src/main中的AndroidManifest.xml中的minSdkVersion,targetSdkVersion,使得和自己的工程下面的app/build.gradle的版本一致。

(5)app/src/main/res/drawable下面增加一張圖片

使用Android studio3.6的java api方式調(diào)用opencv

(6)app/src/main/res/layout中修改布局文件activity_main.xml

使用Android studio3.6的java api方式調(diào)用opencv

<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' tools:context='.MainActivity' > <ImageView android: android:layout_width='wrap_content' android:layout_height='wrap_content' android:background='@drawable/dilireba' android:layout_centerInParent='true'/> <Button android: android:layout_width='wrap_content' android:layout_height='wrap_content' android:layout_below='@id/img' android:layout_centerHorizontal='true' android:text='灰度化'/>'</RelativeLayout>

(7)修改app/src/main/java/com.example.op下面的MainActivity

package com.example.op;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 org.opencv.android.BaseLoaderCallback;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 img; private static boolean flag = true; private static boolean isFirst = true; private static final String TAG = 'MainActivity'; 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, 'baseloader success'); break; default: super.onManagerConnected(status); Log.i(TAG, String.valueOf(status)); break; } } }; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); btnProcess = (Button)findViewById(R.id.btn_gray_process); img = (ImageView)findViewById(R.id.img); Log.i(TAG, 'initUI sucess...'); btnProcess.setOnClickListener(new ProcessClickListener()); } public void procSrc2Gray(){ Mat rgbMat = new Mat(); Mat grayMat = new Mat(); srcBitmap = BitmapFactory.decodeResource(getResources(), R.drawable.dilireba); grayBitmap = Bitmap.createBitmap(srcBitmap.getWidth(), srcBitmap.getHeight(), Bitmap.Config.ARGB_8888); 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){ img.setImageBitmap(grayBitmap); btnProcess.setText('gray image'); flag = false; } else{ img.setImageBitmap(srcBitmap); btnProcess.setText('rgb image'); flag = true; } } } @Override protected void onResume() { // TODO Auto-generated method stub super.onResume(); //load OpenCV engine and init OpenCV library OpenCVLoader.initAsync(OpenCVLoader.OPENCV_VERSION, getApplicationContext(), mLoaderCallback); Log.i(TAG, 'onResume sucess load OpenCV...'); }}

(8)app/build.gradledependencies中增加,

implementation project(path: ’:openCVLibrary341’)

(9)環(huán)境變量,path中增加adb所在路徑,C:UsersxxxAppDataLocalAndroidSdkplatform-tools

(10)命令行進(jìn)入apk所在的路徑D:AndroidOpenCV-android-sdkapk,執(zhí)行,

adb install OpenCV_3.4.1_Manager_3.41_x86.apk

在模擬器中安裝opencv-manager,然后重啟模擬器

使用Android studio3.6的java api方式調(diào)用opencv

工程目錄結(jié)構(gòu):

使用Android studio3.6的java api方式調(diào)用opencv

運(yùn)行:

使用Android studio3.6的java api方式調(diào)用opencv

The Code:

http://xiazai.jb51.net/202003/yuanma/op_jb51.rar

總結(jié)

到此這篇關(guān)于使用Android studio3.6的java api方式調(diào)用opencv的文章就介紹到這了,更多相關(guān)Android studio3.6java api調(diào)用opencv內(nèi)容請(qǐng)搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!

標(biāo)簽: Java
相關(guān)文章:
主站蜘蛛池模板: 欧美成人免费午夜影视 | 一级毛片免费视频网站 | 久久精品国产免费观看99 | 欧美一区亚洲 | 欧美精品久久久久久久免费观看 | 一区二区三区国产美女在线播放 | 亚洲一区免费在线 | 免费观看a黄一级视频 | 久久精品道一区二区三区 | 日本亚欧乱色视频在线观看 | 成人黄色免费看 | 91欧美精品 | 男女牲高爱潮免费视频男女 | 成人在线亚洲 | 国内自拍小视频 | 国内精品久久久久久影院8f | 欧美色视频日本片高清在线观看 | 成人观看的视频三级 | 久久久网站 | 亚洲一级网站 | 国产欧美视频一区二区三区 | 国产在线视频欧美亚综合 | 青青热久久国产久精品秒播 | 午夜三级a三级三点在线观看 | 在线日韩视频 | 国产三级在线视频播放线 | 久久五月女厕所一区二区 | 免费看日韩欧美一级毛片 | 亚洲一区亚洲二区 | 日本a级毛片免费观看 | 正在播放国产乱子伦视频 | 巨大热杵在腿间进进出出视频 | 精品日本久久久久久久久久 | 一级片在线观看视频 | 国产精品hd免费观看 | 久久综合本色宗合一本色 | 成人免费一区二区三区在线观看 | 中文国产成人精品久久水 | 亚洲一区二区三区影院 | 中文字幕一区在线播放 | 成年男人午夜片免费观看 |