54 lines
2.9 KiB
Markdown
54 lines
2.9 KiB
Markdown
Camera capture demo using OpenCV
|
|
================================
|
|
|
|
Display camera input using the [OpenCV](https://opencv.org) library.
|
|
|
|
Requirements
|
|
------------
|
|
|
|
### SPACEBOX
|
|
|
|
The required libraries for the overall framework must be installed first. Follow the instructions in [Installing Requirements](../../README.md#installing-requirements) in the main README.
|
|
|
|
### OpenCV
|
|
|
|
Follow the instructions in the main README to build OpenCV for [Linux](../../README.md/#linux-1), [Android](../../README.md#android-1), or both, depending on which platforms the demo is going to be built for.
|
|
|
|
Build
|
|
-----
|
|
|
|
### config
|
|
|
|
In `config.json`, `render driver` should be set to `opengl` on Linux and `opengles2` on Android (in other projects, opengles2 can work on Linux, which is why this is a config value rather than built into the engine).
|
|
|
|
### Linux
|
|
|
|
In addition to the usual SPACEBOX paths to edit, there are two paths to configure in the [Makefile](Makefile) under the `Linux build` section. Edit `OPENCV_INCPATH` and `OPENCV_LINUX_LDPATH` to match locations in the OpenCV project compiled earlier. Then the `camera` target should compile.
|
|
|
|
make camera
|
|
|
|
After it compiles, run the binary to see the camera input.
|
|
|
|
./camera
|
|
|
|
### Android
|
|
|
|
Compiling with NDK 24 may cause an error `cannot open crtbegin_so.o`. [This thread's](https://stackoverflow.com/q/69795531) suggestion of using the `-nostartfiles` linker flag seems to fix it. It may need to be inserted into the main SDL `Android.mk` file, which is in the root of the SDL source package installed earlier and referenced in this project's Makefile. Line 83 should be changed to:
|
|
|
|
LOCAL_LDFLAGS := -Wl,--no-undefined -nostartfiles
|
|
|
|
In the [Makefile](Makefile), edit `OPENCV_ANDROID_SDK` to match the location of the folder built earlier. At this point, the target should be able to build.
|
|
|
|
make build/android/ooo.shampoo.camera
|
|
|
|
An APK will be output to `build/android/ooo.shampoo.camera/app-debug.apk` which can be loaded onto a device or emulator.
|
|
After loading the APK, make sure to give camera permissions to the app. Then, run the app.
|
|
|
|
Settings -> Apps & notifications -> All apps -> Camera Capture Test -> Permissions -> Camera
|
|
|
|
The explanation in the main README for the [fill_screen Android build](../../README.md#fill_screen) applies to this project, with a few additional notes.
|
|
|
|
* The NDK version is [raised to 24](https://github.com/opencv/opencv/pull/19597), and the minimum SDK version is 21 (this was chosen arbitrarily, but it was failing with version 18).
|
|
* There are additional steps added in the Makefile for linking to the pre-built shared libraries for OpenCV and libtbb (which was generated by the OpenCV build process). See [this thread](https://stackoverflow.com/q/9870435) for more info on how to link pre-built libraries per-ABI to an Android build using GNU make.
|
|
* There is an extra target for including the config JSON and shaders as assets in the Android project.
|