Skip to content

Software blocks for building your own camera. Color space conversion, JPEG encoding, image processing, etc. ARM NEON optimizations whenever possible.

License

Notifications You must be signed in to change notification settings

webercalixto/cameraBuildingBlocks

Repository files navigation

* Keep in mind this is a work in progress

Author: weber calixto (webersouzacalixto at gmail)

Table of contents

  1. About this project
    1.1 Git workflow
    1.1 Dependencies
  2. Prebuilt packages
  3. Build Instructions
    3.1 First Build
    3.2 Subsequent Builds
    3.2 Clean

About this project

This repo will contain several processing blocks, necessary to build a functional IP camera.
It is build upon several other projects (ninjadaemon, opencv, rapidjson, pistache, etc)

My goal is to make easier for others to build their own IP camera devices.

Exception handling

Some lines with potential exceptions are left un-try-catched intentionally so the ugly runtime error can be seen.

Git workflow

I've chosen to work with GitHubflow (i.e Only a master branch with feature branches, no master/develop branching scheme, versioning with git tags).

Convention: Every master commit must be stable.

Dependencies

  1. This project is built and tested with GCC 8.3 on a raspberry pi 3 running raspbian 10. Feel free to build/test on other platforms.

  2. Must have git-lfs installed and enabled to fetch the prebuilt packages on this repo

  3. You will need GCC 8+ or clang 7+ to compile this project, as it makes extensive use of C++17

  4. You must install clang-formatter to edit code following this project's code style.

  5. Whenever possible, the blocks use NEON optimizations, targetting for the raspberry pi 3 and similar platforms.
    For each block, I am trying my best to mantain at least 1 platform-indepent version.

  6. You will need an modern g++ ARM compiler. On my debian 10:
    apt install g++-arm-linux-gnueabi* crossbuild-essential-arm*
    Then, to set the default compilar for the armhf:
    sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/arm-linux-gnueabihf-gcc 500 --slave /usr/bin/g++ g++ /usr/bin/arm-linux-gnueabihf-g++

Prebuilt packages

I have prebuilt OpenCV 4.1 for raspbian 10 with NEON, TBB and VFPV3.
It's such a pain to build with optimizations that I commited to LFS a .deb package. Enjoy

Build instructions

First Build

cd scripts/

./submodules.sh

./build.sh

Subsequent builds

cd scripts/

./build.sh

To clean

cd scripts/

./clean.sh

About

Software blocks for building your own camera. Color space conversion, JPEG encoding, image processing, etc. ARM NEON optimizations whenever possible.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages