# 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?
After completing this Learning Path, you'll be able to perform the following tasks:
- 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'll need the following prerequisites:
- 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

**What result should I expect when I run the app after adding OpenCV?**

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.

**Where do I add the camera view and UI controls?**

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.

**Which OpenCV component provides frames for processing in this app?**

`JavaCameraView` supplies camera frames. You’ll process those frames as OpenCV `Mat` objects in your activity code.

**Do I need to use the exact project and package names shown?**

Using the provided names is recommended. However, you can choose different names, as long as you stay consistent across the project configuration and code.

**What should I check if the camera preview doesn't appear?**

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.
