# Create Computer Vision Applications with OpenCV on Android Devices

## In this learning path

- [Introduction](https://learn.arm.com/learning-paths/mobile-graphics-and-gaming/android_opencv_camera/)
- [Overview](https://learn.arm.com/learning-paths/mobile-graphics-and-gaming/android_opencv_camera/background/)
- [Create a project and add OpenCV](https://learn.arm.com/learning-paths/mobile-graphics-and-gaming/android_opencv_camera/create-project/)
- [Get camera images using OpenCV](https://learn.arm.com/learning-paths/mobile-graphics-and-gaming/android_opencv_camera/add-camera/)
- [Process Images](https://learn.arm.com/learning-paths/mobile-graphics-and-gaming/android_opencv_camera/process-images/)
- [Summary](https://learn.arm.com/learning-paths/mobile-graphics-and-gaming/android_opencv_camera/summary/)
- [Next Steps](https://learn.arm.com/learning-paths/mobile-graphics-and-gaming/android_opencv_camera/_next-steps/)

## About this Learning Path

| Skill level:        | Introductory       |
|---------------------|--------------------|
| Reading time:       | 30 min             |
| Last updated:       | 05 Aug 2026        |

| Author:             | Dawid Borycki [GitHub](https://github.com/dawidborycki) |
|---------------------|--------------------------------------------------------|
| Arm IP:             | [Cortex-A](https://support.arm.com/?tab=compute-ip&Product%20Type=Application%20Processors) |
| Tags:               | [Graphics](https://learn.arm.com/tag/graphics), [Windows](https://learn.arm.com/tag/windows), [Android](https://learn.arm.com/tag/android), [Android Studio](https://learn.arm.com/tag/android-studio), [Kotlin](https://learn.arm.com/tag/kotlin), [Java](https://learn.arm.com/tag/java) |

### Who is this for?
This is an introductory topic for developers who are interested in creating Computer Vision Applications with OpenCV on Android Devices.

### What will you learn?
Upon completion of this Learning Path, you will be able to:
- Describe what OpenCV is, and what it can offer.
- Create and configure a project to add OpenCV support.
- Process camera images using OpenCV.

### Prerequisites
Before starting, you will need the following:
- A development machine with [Android Studio](https://developer.android.com/studio) installed.
- An Android smartphone.

### Summary
You’ll build an Android app that captures and processes camera frames with OpenCV. First, you’ll configure a Kotlin project, add camera access and a `JavaCameraView`, and implement frame handling with `Mat` objects. Then, you’ll apply adaptive thresholding when processing is enabled and run the app on a device to switch between the original and thresholded live views.

### Frequently asked questions
<details>
<summary>What result should I expect when I run the app after adding OpenCV?</summary>
You should see a camera preview from `JavaCameraView` after granting camera permission. Starting the preview shows live frames. To switch to an adaptive thresholded image, check the processing checkbox.
</details>

<details>
<summary>Where do I add the camera view and UI controls?</summary>
Edit `activity_main.xml` to include a `JavaCameraView`, start and stop buttons, and a checkbox. Replace the existing layout with the provided XML so the controls appear correctly.
</details>

<details>
<summary>Which OpenCV component provides frames for processing in this app?</summary>
`JavaCameraView` supplies camera frames. You’ll process those frames as OpenCV `Mat` objects in your activity code.
</details>

<details>
<summary>Do I need to use the exact project and package names shown?</summary>
Using the provided names is recommended. However, you can choose different names, as long as you stay consistent across the project configuration and code.
</details>

<details>
<summary>What should I check if the camera preview doesn't appear?</summary>
Verify the app has camera permission and that the `JavaCameraView` is present in the layout. Use the start control to begin the preview before expecting frames to update.
</details>
