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.