欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

Android如何通過Javasdk的方式接入OpenCv

小編這次要給大家分享的是Android如何通過Java sdk的方式接入OpenCv,文章內(nèi)容豐富,感興趣的小伙伴可以來了解一下,希望大家閱讀完這篇文章之后能夠有所收獲。

尚義ssl適用于網(wǎng)站、小程序/APP、API接口等需要進(jìn)行數(shù)據(jù)傳輸應(yīng)用場景,ssl證書未來市場廣闊!成為創(chuàng)新互聯(lián)的ssl證書銷售渠道,可以享受市場價(jià)格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:028-86922220(備注:SSL證書合作)期待與您的合作!

簡述

公司最近要做運(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如何通過Java sdk的方式接入OpenCv

二、Android Studio 集成OpenCV Sdk

1、Android Studio 下載cmake和ndk

Android如何通過Java sdk的方式接入OpenCv

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

Android如何通過Java sdk的方式接入OpenCv

Android如何通過Java sdk的方式接入OpenCv

Android如何通過Java sdk的方式接入OpenCv

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

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

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

Android如何通過Java sdk的方式接入OpenCv

Android如何通過Java sdk的方式接入OpenCv

Android如何通過Java sdk的方式接入OpenCv

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

Android如何通過Java sdk的方式接入OpenCv

修改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。

Android如何通過Java sdk的方式接入OpenCv

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" />

Android如何通過Java sdk的方式接入OpenCv

三、使用

 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&#63;) {
    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é)果展示:

Android如何通過Java sdk的方式接入OpenCv

展示圖

看完這篇關(guān)于Android如何通過Java sdk的方式接入OpenCv的文章,如果覺得文章內(nèi)容寫得不錯(cuò)的話,可以把它分享出去給更多人看到。

網(wǎng)頁題目:Android如何通過Javasdk的方式接入OpenCv
標(biāo)題網(wǎng)址:http://aaarwkj.com/article16/pesjdg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供Google軟件開發(fā)、虛擬主機(jī)自適應(yīng)網(wǎng)站、定制網(wǎng)站、微信小程序

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

h5響應(yīng)式網(wǎng)站建設(shè)
91午夜福利视频在线观看| 午夜一区二区精品视频国产 | 浮力草草日韩欧美三级| 白白色最新福利在线视频观看| 超碰av之男人的天堂| 99人妻一区二区三区在线| 中文字幕不卡一区在线| 国产日韩欧美老年人激情| 99热在线精品国产观看| 手机免费在线观看国产精品| 亚洲婷婷久久一区二区| 最新人妻少妇精品中文字幕视频| 精品国产美女诱惑久久久| 欧美高清视频看片在线观看| 真做的欧美三级在线观看| 亚洲va在线va天堂va在线| 国产无遮挡又黄又爽网站| 五月婷久久精品国产亚洲av| 日韩精品电影一二三| 禁止18岁以下的视频| 久久精品免成人费电影| 日本精品国产一区二区在线| 国产欧美日韩在线高清| 综合国产精品久久久久久| 清纯少妇激情四射网站| 双高干文男女主都很强| 91精品啪在线观看国产日本| 麻豆视频91免费观看| 在线播放精品免费不卡| 欧美日韩亚洲精品综合网| 日韩中文字幕一二三| 久久免费看少妇高潮av| 手机在线观看午夜小视频| 亚洲s码在线一区二区| 一区二区三区在线观看淫| av天堂网站在线观看| 麻豆精品国产免费av影片| 欧美日韩成人精品一区二区| 97乱碰视频在线观看| 亚洲一区二区三区精品日韩| 久久亚洲一区二区麻豆偷|