jeff1evesque / iscanner Goto Github PK
View Code? Open in Web Editor NEWBackend iOS, and Android logic for facial, and iris recognition
Backend iOS, and Android logic for facial, and iris recognition
Since we intend to develop non-UI logic with C++ (Objective-C for front-end), we will develop within a linux virtual machine. This will allow us to separate dependencies from different projects, and easier to deploy in a minimalistic fashion (not installing unneeded packages). Specifically, we will install, and setup Vagrant.
Note: this issue corresponds to jeff1evesque/machine-learning#1393.
After #4 has been resolved, we will implement Jenkins in order to perform automated unit testing.
Note: this issue corresponds to jeff1evesque/machine-learning#204
We will add the /log/ directory to
.gitignore`.
We need to add .vagrant/
to the .gitignore
.
After #46 has been resolved, we will redirect the following commands in install_opencv.pp
:
cmake
make
make install
to its own corresponding log file, in the /log
directory.
After #4 has been resolved, we will implement puppet in order to manage various configurations.
Note: this issue corresponds to jeff1evesque/machine-learning#1351
We will define the necessary configurations that will allow port forwarding, such that our Virtual Machine will be accessible outside of VirtualBox.
We need to install the C++ gcc compiler:
sudo apt-get install g++
Note: we will use C++ for non-UI code, which will allow a majority of the code base to have the possibility of being reused for android based devices.
Determine if OpenCV should be installed on the iOS device. If not, then we can send images in real time to a server implementing iris-recognition.
We will install a minimal gnome UI for the Ubuntu Server.
We will create an implementation of vagrant, therefore, create a vagrantfile
.
After #8 has been resolved, and jeff1evesque/machine-learning#1931 has been resolved, we will create the subsection Puppet within the README.md
documentation.
We will temporarily allow the VirtualBox GUI to display each time the VM is started.
We will install guest additions within our puppet manifest default.pp
. This will Enable USB Controller, and eliminate the 1394
error:
libdc1394 error: Failed to initialize libdc1394
To install OpenCV, we need the following:
Install dependencies
sudo apt-get -y install libopencv-dev build-essential cmake git libgtk2.0-dev pkg-config python-dev python-numpy libdc1394-22 libdc1394-22-dev libjpeg-dev libpng12-dev libtiff4-dev libjasper-dev libavcodec-dev libavformat-dev libswscale-dev libxine-dev libgstreamer0.10-dev libgstreamer-plugins-base0.10-dev libv4l-dev libtbb-dev libqt4-dev libfaac-dev libmp3lame-dev libopencore-amrnb-dev libopencore-amrwb-dev libtheora-dev libvorbis-dev libxvidcore-dev x264 v4l-utils unzip
Download OpenCV
mkdir opencv
cd opencv
wget https://github.com/Itseez/opencv/archive/3.0.0-beta.zip -O opencv-3.0.0-beta.zip
unzip opencv-3.0.0-beta.zip
Install OpenCV
cd opencv-3.0.0-beta
mkdir build
cd build
cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D WITH_TBB=ON -D BUILD_NEW_PYTHON_SUPPORT=ON -D WITH_V4L=ON -D WITH_QT=ON -D WITH_OPENGL=ON ..
make -j $(nproc)
sudo make install
System Update: to get OpenCV working properly, we need to tell Ubuntu.
sudo /bin/bash -c 'echo "/usr/local/lib" > /etc/ld.so.conf.d/opencv.conf'
sudo ldconfig
Our C++ compiler will compile files into executable files with the .exe
file extension. We will ignore all executable files in the main application directory.
We have currently implemented OpenCV version 3.0.0-beta. However, we will update the manifest file install_opencv.pp
to build the official OpenCV 3.0:
We need to resolve the issue of being able to mount a USB drive from the host machine, to the guest vagrant virtual machine.
After #28 has been resolved, and jeff1evesque/machine-learning#1937 has been resolved, we will create a subsection Jenkins within the README.md
documentation.
We will rename default.pp
to install_opencv.pp
. Then, we will need to adjust the Vagrantfile
correspondingly.
After #30 has been resolved, we will create a corresponding section within the README.md
.
We will create a puppet/
directory, and move the manifests/
directory into it. Then, we need to adjust the Vagrantfile
, respectively.
Note: we will implement the following directory structure:
Vagrantfile
install_opencv.pp
README.md
detector.cpp
After #30 has been resolved, we will create a wiki page on OpenCV
We need to install the git package within default.pp
:
package {'git': ensure => present, }
which will be responsible for installing git. This file will need to be referenced within the vagrantfile
as follows:
Vagrant.configure("2") do |config|
...
config.vm.provision "puppet" do |puppet|
puppet.manifests_path = "/manifests"
puppet.manifest_file = "default.pp"
end
...
end
Note: by default, the entry point is site.pp
for a simple puppet implementation. However, when implementing puppet within vagrant, the entry point can be explicitly defined (as above).
We need to implement the VideoCapture
class in detector.cpp
. This file will capture video from the default camera.
We need to discuss the following about the gcc
compiler:
-o
flag to specify output file name:
pkg-config --cflags --libs opencv
detector
./detector
pkg-config
while compiling.
pkg-config --cflags opencv
prints the list of arguments needed to allow the compiler to find the header files, and make necessary links to OpenCVpkg-config --libs opencv
prints the commands needed for linkingg++ -o detector.exe detector.cpp``pkg-config --cflags --libs opencv
g++ -o detector.exe detector.cpp $(pkg-config --cflags --libs opencv)
We will provide a feature that will perform facial recognition on images, similar to the VideoCapture
class implementation.
We will describe the intention of using C++ for the back-end logic, is to allow the capacity to reuse code, perhaps for android based devices. For iOS devices, Obj-C would need to be used to develop the user-interface, while for android devices, the backend logic could be extended with additional C++, unless Java is preferred. However, the latter (android topic) is not a concern for this repository.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.