I wanted to deploy an OpenCV(Python) application on the internet and needed a free hosting service after searching I found OpenShift which is an Platform as a service provider. They offer a variety of application type (python, ruby, php, django etc.) The free tier allow you to host 3 application with 1GB of storage. So it took me weeks before I could get OpenCV installed properly with no errors - one major problem was storage constraints so I had to delete any file that was unimportant and install only the necessities. After the whole thing was over I thought it would be nice to write about it.
Sign up and create an application
The first step would be to sign up for an OpenShift account. Then create a new application select a Do-It-Yourself (custom) application and complete the wizard. After the wizard is completed you would need to go to the application page and copy the secure shell (ssh) session command which you can access by clicking the "WANT TO LOG IN TO YOUR APPLICATION?" link.
Having copied the command, open a terminal and paste it to get started.
Installation
Disclaimer: From here on you're going to be looking at loads of scrolling text. So if you are allergic to boredom get a drink or open up a movie on the side. Copy the scripts below and paste in the command line. Note that I delete the apps , data and doc folders from the OpenCV installation so as to save space this could be a problem if you need haarcascade.xml or any stuff located in these folders, so if that is your case you must check and customize your installation from line 57 of the script but be careful to avoid the "Disk quota exceeded" error.# Install python cd $OPENSHIFT_TMP_DIR wget http://python.org/ftp/python/2.7.3/Python-2.7.3.tar.bz2 tar jxf Python-2.7.3.tar.bz2 cd Python-2.7.3 ./configure --prefix=$OPENSHIFT_DATA_DIR --enable-shared make make altinstall export PATH=$OPENSHIFT_DATA_DIR/bin:$PATH export LD_LIBRARY_PATH=$OPENSHIFT_DATA_DIR/lib # Install setuptools cd $OPENSHIFT_TMP_DIR wget --no-check-certificate https://pypi.python.org/packages/2.7/s/setuptools/setuptools-0.6c11-py2.7.egg#md5=fe1f997bc722265116870bc7919059ea sh setuptools-0.6c11-py2.7.egg export PATH=$OPENSHIFT_DATA_DIR/bin:$PATH export LD_LIBRARY_PATH=$OPENSHIFT_DATA_DIR/lib # Install pip cd $OPENSHIFT_TMP_DIR wget --no-check-certificate http://pypi.python.org/packages/source/p/pip/pip-1.1.tar.gz tar zxf pip-1.1.tar.gz cd pip-1.1 python2.7 setup.py install --prefix=$OPENSHIFT_DATA_DIR/lib/python2.7/site-packages/ python2.7 setup.py install export PATH=$OPENSHIFT_DATA_DIR/bin:$PATH export LD_LIBRARY_PATH=$OPENSHIFT_DATA_DIR/lib # Install numpy $OPENSHIFT_DATA_DIR/bin/pip install numpy # House-cleaning cd $OPENSHIFT_TMP_DIR rm -r Python-2.7.3 rm Python-2.7.3.tar.bz2 rm -r pip-1.1/ rm pip-1.1.tar.gz rm setuptools-0.6c11-py2.7.egg # Install CMake cd $OPENSHIFT_TMP_DIR wget http://www.cmake.org/files/v2.8/cmake-2.8.10.2.tar.gz tar xvf cmake-2.8.10.2.tar.gz cd cmake-2.8.10.2 ./configure --prefix=$OPENSHIFT_DATA_DIR gmake gmake install # Download OPenCV cd $OPENSHIFT_TMP_DIR wget http://sourceforge.net/projects/opencvlibrary/files/opencv-unix/2.4.3/OpenCV-2.4.3.tar.bz2/download tar xvf OpenCV-2.4.3.tar.bz2 # More House-cleaning rm cmake-2.8.10.2.tar.gz rm OpenCV-2.4.3.tar.bz2 cd OpenCV-2.4.3/ rm -r 3rdparty/ rm -r android rm -r doc rm -r data rm -r ios rm -r samples rm -r apps rm README rm -r ../cmake-2.8.10.2/Tests rm -r ../cmake-2.8.10.2/Testing rm -r ../cmake-2.8.10.2/Example rm -r ../cmake-2.8.10.2/Docs rm -r ../cmake-2.8.10.2/Source
Congratulations you are now half way through the process, But now you have to do something before installing OpenCV. To reduce the build size; we turn off build tests and remove the lines that copy the data, apps and doc folders. Just follow these steps:
- Open CMakeList.txt in vi editor using the command vi CMakeList.txt.
- Show line numbers using the :set number command.
- Go to Lines 155 and 156 and turn off regression and performance test.
- Delete Lines 448 to 456.
- Save and Quit using the :wq command.
mkdir release cd release $OPENSHIFT_DATA_DIR/bin/cmake cmake ../OpenCV-2.4.3 -D BUILD_NEW_PYTHON_SUPPORT=ON -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=$OPENSHIFT_DATA_DIR -D PYTHON_LIBRARY=$OPENSHIFT_DATA_DIR/lib/libpython2.7.so -D CMAKE_INCLUDE_PATH=$OPENSHIFT_DATA_DIR/include/python2.7 -D PYTHON_INCLUDE_DIR=$OPENSHIFT_DATA_DIR/include/python2.7 -D PYTHON_PACKAGES_PATH=$OPENSHIFT_DATA_DIR/lib/python2.7/site-packages -D PYTHON_EXECUTABLE=$OPENSHIFT_DATA_DIR/bin/python2.7 -D WITH_OPENEXR=OFF -D BUILD_DOCS=OFF -DBUILD_SHARED_LIBS=ON .. make make install
Test
Open the python console by typing python2.7 in the command line. import cv2, if you have no error you are good to go but if you have a "NameError: name 'cv2' is not defined" something is wrong.
Python 2.7.3 (default, May 28 2013, 07:58:37) [GCC 4.4.7 20120313 (Red Hat 4.4.7-3)] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> import cv2 >>> A = cv2.imread("A.jpg") >>> print A None
Conclusion
This concludes the installation you can now clean up the $OPENSHIFT_TMP folder and install Django or any other web framework you want to use. Hope this was helpful, feel free to share this post and ask question if any. Happy Coding!