Android에서 OpenCV를 사용해보기
7819 단어 안드로이드AndroidStudioOpenCVKotlin
TL;DR
Android Studio에서 OpenCV SDK를 사용하여 앱을 만드는 방법.
환경
사전 준비
Android Studio에서 빈 앱을 만듭니다.
OpenCV 출시 사이트에서 android 버전의 SDK를 다운로드하여 적절한 위치에 압축을 풉니 다.
이번에는 opencv-4.2.0-android-sdk.zip을 사용합니다.
구현
OpenCV 캡처
File
-> New
-> Import Module
선택. sdk
폴더를 지정하여 가져옵니다.모듈 이름은 기본값이면
sdk
이므로 opencv-sdk
모듈 종속성 추가
앱 측
build.gradle
의 dependencies에 sdk를 추가.build.gradle
dependencies {
implementation project(path: ':sdk')
...
카메라 권한 추가
앱의
AndroidManifest.xml
에 카메라 권한 추가.AndroidManifest.xml
<uses-permission android:name="android.permission.CAMERA" />
<uses-feature android:name="android.hardware.camera" android:required="false" />
<uses-feature android:name="android.hardware.camera.autofocus" android:required="false" />
Activity
/Fragment
에도 권한 취득 처리를 작성하십시오.화면 레이아웃 작성
Activity 레이아웃 XML에 카메라보기 추가
activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout 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"
tools:context=".MainActivity">
<org.opencv.android.JavaCameraView
android:id="@+id/camera_view"
android:layout_width="0dp"
android:layout_height="0dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:show_fps="true" />
</androidx.constraintlayout.widget.ConstraintLayout>
코드 작성
활동에 코드 추가.
setCameraPermissionGranted()
잊지 않도록주의.MainActivity.kt
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
OpenCVLoader.initDebug() // ← OpenCVライブラリ読込
initCamera()
}
fun initCamera() {
// リスナ設定
camera_view.setCvCameraViewListener(object : CameraBridgeViewBase.CvCameraViewListener2 {
override fun onCameraViewStarted(width: Int, height: Int) { }
override fun onCameraViewStopped() { }
override fun onCameraFrame(inputFrame: CameraBridgeViewBase.CvCameraViewFrame?): Mat {
// このメソッド内で画像処理. 今回はポジネガ反転.
val mat = requireNotNull(inputFrame).rgba()
Core.bitwise_not(mat, mat)
return mat
}
})
// プレビューを有効にする
camera_view.setCameraPermissionGranted()
camera_view.enableView()
}
실행 결과
Reference
이 문제에 관하여(Android에서 OpenCV를 사용해보기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/ash8h/items/2556b9226129ba8bc34d텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)