Create a project

You will need a development computer with Android Studio installed (this examples uses Android Studio Jellyfish | 2023.3.1 Patch 1).

Follow these steps to create a project and add OpenCV:

  1. Open Android Studio on your development machine and then click the + New Project icon:

Image Alt Text:img1

  1. In the New Project window, select Empty Views Activity:

Image Alt Text:img2

  1. Configure the project as follows (see figure below):
  • Name: Arm64.OpenCV.Camera.
  • Package name: com.example.arm64opencvcamera.
  • Save location: Select relevant file location.
  • Language: Kotlin.
  • Minimum SDK: API 24.
  • Build configuration language: Kotlin DSL.

Image Alt Text:img3

  1. Click the Finish button.

The project will be ready in a few moments, and Android Studio should appear as shown below:

Image Alt Text:img4

Add OpenCV support

To add OpenCV for Arm64, open the build.gradle.ts (Module: app), and add the following line under the dependencies:

    

        
        
            implementation("org.opencv:opencv:4.10.0")
        
    

Then, click the Sync Now link in the top pane that appears:

Image Alt Text:img5

From here on, you can use OpenCV in your application.

In the next step, you will initialize OpenCV. To do so, you will slightly modify the application view to display the OpenCV initialization status in the TextView.

OpenCV initialization

To initialize OpenCV and check the initialization status, follow these steps:

  1. Under the Project (left window) double-click app/res/layout/activity_main.xml. This opens the view designer.

  2. Click the highlighted icon in the top-right corner to switch to the XML view.

Image Alt Text:img6

  1. Modify the activity_main.xml file as shown below:
    

        
        
            <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:padding="16dp">

    <!-- TextViewStatus -->
    <TextView
        android:id="@+id/textViewStatus"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text=""
        android:layout_gravity="center_horizontal"
        android:layout_margin="16dp"
        android:textSize="64px"/>

</LinearLayout>
        
    
  1. Open MainActivity.kt (app/kotlin+java/com.example.arm64opencvcamera), and replace the file contents with the following code:
    

        
        
            package com.example.arm64opencvcamera

import android.os.Bundle
import android.widget.TextView
import androidx.activity.enableEdgeToEdge
import androidx.appcompat.app.AppCompatActivity
import org.opencv.android.OpenCVLoader

class MainActivity : AppCompatActivity() {
    private lateinit var textViewStatus: TextView
    private var isOpenCvInitialized = false

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        enableEdgeToEdge()
        setContentView(R.layout.activity_main)

        textViewStatus = findViewById(R.id.textViewStatus)

        isOpenCvInitialized = OpenCVLoader.initLocal()

        updateControls()
    }

    private fun updateControls() {
        if(!isOpenCvInitialized) {
            textViewStatus.text = "OpenCV initialization error"
        } else {
            textViewStatus.text = "OpenCV initialized"
        }
    }
}
        
    

The Kotlin code above imports the necessary Android and OpenCV classes. OpenCVLoader is used to load the OpenCV library, enableEdgeToEdge for edge-to-edge design, and TextView.

The MainActivity class declares a TextView to display the status of OpenCV initialization. This class also declares the Boolean variable isOpenCvInitialized, which is used to track whether OpenCV has been successfully initialized.

The onCreate method is a lifecycle method called when the activity is created. You will use it to enable edge-to-edge design for the activity (enableEdgeToEdge), set the layout for the activity using activity_main.xml (setContentView), and bind the TextView with the textViewStatus declared in the XML layout (findViewById). Next, you will use the OpenCVLoader.initLocal() method, which attempts to initialize OpenCV and sets isOpenCvInitialized based on the success or failure of the initialization.

Finally, you call updateControls(), which updates the UI based on whether OpenCV was initialized successfully. Specifically, if isOpenCvInitialized is false, it sets the TextView’s text to “OpenCV initialization error”. Otherwise, the text is set to “OpenCV initialized”.

Launch the application

You can now launch the application in the simulator. To do so, use the top menu, where you click Run -> Run ‘app’. The application should start, and you should see the “OpenCV initialized” text as shown below:

Image Alt Text:img7

You have successfully added OpenCV to the Android application. In the next step, you will extend the application to get images from the device’s camera and process them in real-time.

Back
Next