diff --git a/README.md b/README.md index 72dac6d..ca4ef0d 100644 --- a/README.md +++ b/README.md @@ -1,8 +1,9 @@ -#Sample Apps for Affdex SDK for Windows and Linux +# Sample Apps for Affdex SDK for Windows and Linux -Welcome to our repository on GitHub! Here you will find example code to get you started with our Affdex Linux SDK 3.2, Affdex Windows SDK 3.4 and begin emotion-enabling you own app! Documentation for the SDKs is available on the Affectiva's Developer Portal. +Welcome to our repository on GitHub! Here you will find example code to get you started with our Affdex Linux SDK 4.0.0, Affdex Windows SDK 3.4 and begin emotion-enabling you own app! Documentation for the SDKs is available on the Affectiva's Developer Portal. -*Build Status* +Build Status +------------- - Windows: [![Build status](https://ci.appveyor.com/api/projects/status/pn2y9h8a3nnkiw41?svg=true)] (https://ci.appveyor.com/project/ahamino/win-sdk-samples) - Ubuntu: [![Build Status](https://travis-ci.org/Affectiva/cpp-sdk-samples.svg?branch=master)](https://travis-ci.org/Affectiva/cpp-sdk-samples) @@ -10,20 +11,20 @@ Welcome to our repository on GitHub! Here you will find example code to get you Dependencies ------------ -*Windows* +##### Windows - Affdex SDK 3.4 (64 bit) - Visual Studio 2013 or higher -*Linux* -- Ubuntu 14.04 or CentOS 7 -- Affdex SDK 3.2 -- CMake 2.8 or higher -- GCC 4.8 +##### Linux +- Ubuntu 16.04 with GCC v5.4.1 +- CentOS 7 with GCC v4.8.x +- Affdex SDK 4.0.0 +- CMake 3.5 or higher -*Additional dependencies* +##### Additional dependencies - OpenCV 2.4 -- Boost 1.59 +- Boost 1.63 - libuuid - libcurl - libopenssl @@ -33,17 +34,47 @@ Installation - Download Affdex SDK [from here](http://developer.affectiva.com/downloads) -*Windows* +##### Windows - Install the SDK using MSI installer. - The additional dependencies get installed automatically by NuGet. +##### Linux + +*Installation Guide for CMake v3.5 and Boost v1.63 for CentOS 7 and Ubuntu 16.04* + +- Boost + +``` +$ wget https://sourceforge.net/projects/boost/files/boost/1.63.0/boost_1_63_0.tar.gz +$ tar -xzvf boost_1_63_0.tar.gz -C $HOME +$ cd boost_1_63_0 +$ ./bootstrap.sh +$ sudo ./b2 -j $(nproc) cxxflags=-fPIC threading=multi runtime-link=shared \ + --with-log --with-serialization --with-system --with-date_time \ + --with-filesystem --with-regex --with-timer --with-chrono --with-thread \ + --with-program_options install +``` + +- CMAKE + +``` +$ wget https://cmake.org/files/v3.8/cmake-3.8.1.tar.gz \ +$ tar -xvf cmake-3.8.1.tar.gz && rm cmake-3.8.1.tar.gz +$ cd $SRC_DIR/cmake-3.8.1/ +$ ./bootstrap --system-curl && \ + make -j$(nproc) && \ + make install && \ + rm -rf $SRC_DIR/cmake-3.8.1 + +``` + *Ubuntu* ```bashrc -sudo apt-get install build-essential libopencv-dev libboost1.55-all-dev libcurl4-openssl uuid-dev cmake -wget https://download.affectiva.com/linux/affdex-cpp-sdk-3.2-20-ubuntu-xenial-xerus-64bit.tar.gz +sudo apt-get install build-essential libopencv-dev libcurl4-openssl uuid-dev +wget https://download.affectiva.com/linux/gcc-5.4/affdex-cpp-sdk-4.0-75-ubuntu-xenial-xerus-x86_64bit.tar.gz mkdir $HOME/affdex-sdk -tar -xzvf affdex-cpp-sdk-3.2-20-ubuntu-xenial-xerus-64bit.tar.gz -C $HOME/affdex-sdk +tar -xzvf affdex-cpp-sdk-4.0-75-ubuntu-xenial-xerus-x86_64bit.tar.gz -C $HOME/affdex-sdk export AFFDEX_DATA_DIR=$HOME/affdex-sdk/data git clone https://github.com/Affectiva/cpp-sdk-samples.git $HOME/sdk-samples mkdir $HOME/build @@ -56,22 +87,17 @@ export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$HOME/affdex-sdk/lib *CentOS* ```bashrc -sudo yum install libcurl-devel.x86_64 libuuid-devel.x86_64 opencv-devel cmake.x86_64 -wget https://sourceforge.net/projects/boost/files/boost/1.55.0/boost_1_55_0.tar.gz/download -O boost_1_55_0.tar.gz -tar -xzvf boost_1_55_0.tar.gz -C $HOME -cd boost_1_55 -./bootstrap.sh --with-libraries=log,serialization,system,date_time,filesystem,regex,timer,chrono,thread,program_options -sudo ./b2 link=static install -wget https://download.affectiva.com/linux/affdex-cpp-sdk-3.2-2893-centos-7-64bit.tar.gz -mkdir $HOME/affdex-sdk -tar -xzvf affdex-cpp-sdk-3.2-2893-centos-7-64bit.tar.gz -C $HOME/affdex-sdk -export AFFDEX_DATA_DIR=$HOME/affdex-sdk/data -git clone https://github.com/Affectiva/cpp-sdk-samples.git $HOME/sdk-samples -mkdir $HOME/build -cd $HOME/build -cmake -DOpenCV_DIR=/usr/ -DBOOST_ROOT=/usr/ -DAFFDEX_DIR=$HOME/affdex-sdk $HOME/sdk-samples -make -export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$HOME/affdex-sdk/lib +$ sudo yum install libcurl-devel.x86_64 libuuid-devel.x86_64 opencv-devel +$ wget https://download.affectiva.com/linux/centos-4.8/affdex-cpp-sdk-4.0-2941-centos-7-x86_64bit.tar.gz +$ mkdir $HOME/affdex-sdk +$ tar -xzvf affdex-cpp-sdk-4.0-2941-centos-7-x86_64bit.tar.gz -C $HOME/affdex-sdk +$ export AFFDEX_DATA_DIR=$HOME/affdex-sdk/data +$ git clone https://github.com/Affectiva/cpp-sdk-samples.git $HOME/sdk-samples +$ mkdir $HOME/build +$ cd $HOME/build +$ cmake -DOpenCV_DIR=/usr/ -DBOOST_ROOT=/usr/ -DAFFDEX_DIR=$HOME/affdex-sdk $HOME/sdk-samples +$ make +$ export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$HOME/affdex-sdk/lib ``` OpenCV-webcam-demo (c++) @@ -113,3 +139,8 @@ The following command line arguments can be used to run it: For an example of how to use Affdex in a C# application .. please refer to [AffdexMe](https://github.com/affectiva/affdexme-win) + +Docker Build Instructions +------------------------- + +Please check out the Dockerfiles in the docker directory to follow the build and run steps to create and run the image. diff --git a/docker/Dockerfile-CentOS b/docker/Dockerfile-CentOS new file mode 100644 index 0000000..922c22e --- /dev/null +++ b/docker/Dockerfile-CentOS @@ -0,0 +1,86 @@ +# A Docker image to be used for building the sample applications for the Linux SDK CentOS7 +# +# build: +# $ docker build --file=Dockerfile-CentOS --tag=v4.0.0:affdex . +# +# the result will be an image that has the tar'ed artifact of the sample app and all of its dependencies installed +# +# run interactively: +# $ docker run -it --rm v4.0.0:affdex + +FROM affectiva/centos7-updates +MAINTAINER Affectiva Development (affdexdev@affectiva.com) + +# Repo for latest git 2.x +RUN yum remove -y git +RUN yum install -y http://opensource.wandisco.com/centos/6/git/x86_64/wandisco-git-release-6-1.noarch.rpm + +RUN yum install -y gcc \ + gcc-c++ \ + jhead \ + curl-devel \ + openssl-devel \ + zlib-devel \ + wget \ + git \ + opencv-devel \ + make + +ENV SRC_DIR /opt/src +ENV BUILD_DIR /opt/build +ENV ARTIFACT_DIR /opt/testapp-artifact + +################################# +###### Clone Sample App Repo ###### +################################# + +RUN git clone https://github.com/Affectiva/cpp-sdk-samples.git $SRC_DIR/sdk-samples + +#### CMAKE #### +WORKDIR $SRC_DIR +RUN wget https://cmake.org/files/v3.8/cmake-3.8.1.tar.gz \ + && tar -xvf cmake-3.8.1.tar.gz && rm cmake-3.8.1.tar.gz +RUN cd $SRC_DIR/cmake-3.8.1/ && \ + ./bootstrap --system-curl && \ + make -j$(nproc) && \ + make install && \ + rm -rf $SRC_DIR/cmake-3.8.1 + +#### BOOST #### +WORKDIR $SRC_DIR +RUN wget https://sourceforge.net/projects/boost/files/boost/1.63.0/boost_1_63_0.tar.gz && \ + tar -xvf boost_1_63_0.tar.gz && \ + rm boost_1_63_0.tar.gz && \ + cd $SRC_DIR/boost_1_63_0 && \ + ./bootstrap.sh &&\ + ./b2 -j $(nproc) cxxflags=-fPIC threading=multi runtime-link=shared \ + --with-log --with-serialization --with-system --with-date_time \ + --with-filesystem --with-regex --with-timer --with-chrono --with-thread \ + --with-program_options install && \ + rm -rf $SRC_DIR/boost_1_63_0 + +#### DOWNLOAD Affdex CentOS SDK #### +WORKDIR $SRC_DIR +RUN wget https://download.affectiva.com/linux/centos-4.8/affdex-cpp-sdk-4.0-2941-centos-7-x86_64bit.tar.gz &&\ + mkdir -p affdex-sdk && \ + tar -xf affdex-cpp* -C affdex-sdk && \ + rm -r $SRC_DIR/affdex-cpp-sdk-4.0-2941-centos-7-x86_64bit.tar.gz + +#### BUILD SAMPLE APP #### +RUN mkdir -p $BUILD_DIR &&\ + cd $BUILD_DIR &&\ + cmake -DOpenCV_DIR=/usr/ -DBOOST_ROOT=/usr/ -DAFFDEX_DIR=$SRC_DIR/affdex-sdk $SRC_DIR/sdk-samples &&\ + make -j$(nproc) + +## CREATE THE ARTIFACT +WORKDIR $ARTIFACT_DIR +RUN mkdir -p $ARTIFACT_DIR &&\ + mv $SRC_DIR/affdex-sdk/ . &&\ + mv $BUILD_DIR . &&\ + tar -cvf ../testapp-artifact.tar.gz . + +ENV AFFDEX_DATA_DIR $ARTIFACT_DIR/affdex-sdk/data +ENV LD_LIBRARY_PATH $ARTIFACT_DIR/affdex-sdk/lib +ENV LD_PRELOAD /usr/lib64/libopencv_core.so + +WORKDIR /opt diff --git a/docker/Dockerfile-Ubuntu b/docker/Dockerfile-Ubuntu new file mode 100644 index 0000000..2df9cfa --- /dev/null +++ b/docker/Dockerfile-Ubuntu @@ -0,0 +1,87 @@ +# A Docker image to be used for building the sample applications for the Linux SDK Ubuntu 16.04 +# +# build: +# $ docker build --file=Dockerfile-Ubuntu --tag=v4.0.0:affdex . +# +# the result will be an image that has the tar'ed artifact of the sample app and all of its dependencies installed +# +# run interactively: +# $ docker run -it --rm v4.0.0:affdex + +FROM ubuntu:16.04 + +# Get dependencies +RUN apt-get update && apt-get install -y software-properties-common +# Repo for latest git 2.x +RUN add-apt-repository -y ppa:git-core/ppa && apt-get update && apt-get install -y git + +RUN apt-get update && apt-get install -y \ + libcurl4-openssl-dev \ + libssl-dev \ + bc \ + gfortran \ + unzip \ + wget \ + g++ \ + make \ + libopencv-dev + +ENV SRC_DIR /opt/src +ENV BUILD_DIR /opt/build +ENV ARTIFACT_DIR /opt/testapp-artifact + +################################# +###### Clone Sample App Repo ###### +################################# + +RUN git clone https://github.com/Affectiva/cpp-sdk-samples.git $SRC_DIR/sdk-samples + +#### CMAKE #### +WORKDIR $SRC_DIR +RUN wget https://cmake.org/files/v3.8/cmake-3.8.1.tar.gz \ + && tar -xvf cmake-3.8.1.tar.gz && rm cmake-3.8.1.tar.gz +RUN cd $SRC_DIR/cmake-3.8.1/ && \ + ./bootstrap --system-curl && \ + make -j$(nproc) && \ + make install && \ + rm -rf $SRC_DIR/cmake-3.8.1 + +#### BOOST #### +WORKDIR $SRC_DIR +RUN wget https://sourceforge.net/projects/boost/files/boost/1.63.0/boost_1_63_0.tar.gz && \ + tar -xvf boost_1_63_0.tar.gz && \ + rm boost_1_63_0.tar.gz && \ + cd $SRC_DIR/boost_1_63_0 && \ + ./bootstrap.sh &&\ + ./b2 -j $(nproc) cxxflags=-fPIC threading=multi runtime-link=shared \ + --with-log --with-serialization --with-system --with-date_time \ + --with-filesystem --with-regex --with-timer --with-chrono --with-thread \ + --with-program_options \ + install && \ + rm -rf $SRC_DIR/boost_1_63_0 + +#### DOWNLOAD Affdex Ubuntu SDK #### +WORKDIR $SRC_DIR +RUN wget https://download.affectiva.com/linux/gcc-5.4/affdex-cpp-sdk-4.0-75-ubuntu-xenial-xerus-x86_64bit.tar.gz &&\ + mkdir -p affdex-sdk && \ + tar -xf affdex-cpp* -C affdex-sdk && \ + rm -r $SRC_DIR/affdex-cpp-sdk-* + +#### BUILD SAMPLE APP #### +RUN mkdir -p $BUILD_DIR &&\ + cd $BUILD_DIR &&\ + cmake -DOpenCV_DIR=/usr/ -DBOOST_ROOT=/usr/ -DAFFDEX_DIR=$SRC_DIR/affdex-sdk $SRC_DIR/sdk-samples &&\ + make -j$(nproc) + +## CREATE THE ARTIFACT +WORKDIR $ARTIFACT_DIR +RUN mkdir -p $ARTIFACT_DIR &&\ + mv $SRC_DIR/affdex-sdk/ . &&\ + mv $BUILD_DIR . &&\ + tar -cvf ../testapp-artifact.tar.gz . + +ENV AFFDEX_DATA_DIR $ARTIFACT_DIR/affdex-sdk/data +ENV LD_LIBRARY_PATH $ARTIFACT_DIR/affdex-sdk/lib +ENV LD_PRELOAD /usr/lib/x86_64-linux-gnu/libopencv_core.so.2.4 + +WORKDIR /opt