亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Android通過Java sdk的方式接入OpenCv的方法

 更新時(shí)間:2020年04月13日 14:37:24   作者:Mp5A5  
這篇文章主要介紹了Android通過Java sdk的方式接入OpenCv的方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

簡述

公司最近要做運(yùn)動檢測和眼球追蹤,鑒于資費(fèi)等因素,最后考慮使用OpenCv的相關(guān)Api來來滿足業(yè)務(wù)需求。在使用過程中發(fā)現(xiàn)OpenCv的v4.2.0和v4.1.2接入后均存在一些bug,所以最后選擇了v4.1.0版本。

接入步驟

 一、下載OpenCV Sdk

前往OpenCv官網(wǎng)下載對應(yīng)的Android v4.1.0版本的sdk。

二、Android Studio 集成OpenCV Sdk

1、Android Studio 下載cmake和ndk

2、Android Studio 新建ndk項(xiàng)目

3、Android Studio 導(dǎo)入OpenCv Sdk

將下載后的OpenCv Sdk進(jìn)行解壓。

將解壓后的OpenCv Sdk目錄下的sdk目錄里面的java包通過Moudule的方式導(dǎo)入到Studio中。

3、修改導(dǎo)入opencv的build.gradle

修改opencv的build.gradle的對應(yīng)的compileSdkVersion等信息。只需復(fù)制app下的build.gradle文件中的即可。記住兩點(diǎn):

apply plugin: 'com.android.library'一定要改成library;

去掉applicationId "com.xx.xx"

4、導(dǎo)入so庫

在項(xiàng)目app/src/main目錄下新建jniLibs,并將解壓后的OpenCv Sdk 目錄下對應(yīng)的路徑 sdk/native/libs 中的 文件復(fù)制到j(luò)niLibs。

AndroidManifest增加相機(jī)權(quán)限

<uses-permission android:name="android.permission.CAMERA" />
<uses-feature android:name="android.hardware.camera" />
<uses-feature android:name="android.hardware.camera.autofocus" />

三、使用

 1、application中檢測是否接入成功。

override fun onCreate() {
    super.onCreate()

    OpenCVLoader.initDebug()

    val loadSuccess: Boolean = OpenCVLoader.initDebug()

    if (!loadSuccess) {
      Log.e("-->", "Opencv load Fail")
    } else {
      Log.e("-->", "Opencv load Success")
    }
}

2、動態(tài)申請相機(jī)權(quán)限

if(ContextCompat.checkSelfPermission(this, Manifest.permission.CAMERA) != PackageManager.PERMISSION_GRANTED){
   ActivityCompat.requestPermissions(this, arrayOf(Manifest.permission.CAMERA), 1);
}else{
   startActivity(Intent(this,OpenCvActivity::class.java))
}

3、測試opencv

class OpenCvActivity : AppCompatActivity(), CvCameraViewListener2 {

  private lateinit var mRotateFrame: Mat
  private lateinit var mRgbFrame: Mat

  public override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    window.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON)
    setContentView(R.layout.activity_opencv)

    jcv_surface_view.setCvCameraViewListener(this)
    // 開啟前置攝像頭
    jcv_surface_view.setCameraIndex(CameraBridgeViewBase.CAMERA_ID_FRONT)
  }

  public override fun onPause() {
    super.onPause()
    if (jcv_surface_view != null) {
      jcv_surface_view!!.disableView()
    }
  }

  public override fun onResume() {
    super.onResume()
    if (!OpenCVLoader.initDebug()) {
      OpenCVLoader.initAsync(OpenCVLoader.OPENCV_VERSION, this, mLoaderCallback)
    } else {
      mLoaderCallback.onManagerConnected(LoaderCallbackInterface.SUCCESS)
    }
  }

  public override fun onDestroy() {
    super.onDestroy()
    if (jcv_surface_view != null) {
      jcv_surface_view!!.disableView()
    }
  }

  override fun onCameraViewStarted(width: Int, height: Int) {
    mRotateFrame = Mat()
    mRgbFrame = Mat()
  }

  override fun onCameraViewStopped() {}
  override fun onCameraFrame(inputFrame: CvCameraViewFrame): Mat {
    mRgbFrame = inputFrame.rgba()
    // 旋轉(zhuǎn)屏幕
    Core.flip(mRgbFrame, mRotateFrame, 1)
    return mRotateFrame
  }

  private val mLoaderCallback: BaseLoaderCallback = object : BaseLoaderCallback(this) {
    override fun onManagerConnected(status: Int) {
      when (status) {
        LoaderCallbackInterface.SUCCESS -> {
          jcv_surface_view!!.enableView()
        }
        else -> {
          super.onManagerConnected(status)
        }
      }
    }
  }
}
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="match_parent"
  android:layout_height="match_parent">

  <org.opencv.android.JavaCameraView
    android:id="@+id/jcv_surface_view"
    android:layout_width="match_parent"
    android:layout_height="match_parent" />

</RelativeLayout>

結(jié)果展示:

展示圖

Demo 的 Github 地址 https://github.com/Mp5A5/AndroidOpenCv

到此這篇關(guān)于Android通過Java sdk的方式接入OpenCv的方法的文章就介紹到這了,更多相關(guān)Android Java sdk接入OpenCv內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評論