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!
I need help with that, I think that I found 2 errors.
ReplyDeleteThe first one is "wget http://sourceforge.net/projects/opencvlibrary/files/opencv-unix/2.4.3/OpenCV-2.4.3.tar.bz2/download " --> dowload not needed,
the second one is the name of CMakeList.txt is CMakeLists.txt. (Lists)
After that i did everything but at the end, python2.7 not found. I added the variable path again and it worked, but I have an error with the ***** import cv2 (not found)
Please, anyone can help me?
Hi Adria,
DeleteCould you post the exact error message that you get...
[photopotter-pew14.rhcloud.com release]\> python2.7
Deletebash: python2.7: command not found
[photopotter-pew14.rhcloud.com release]\> export PATH=$OPENSHIFT_DATA_DIR/bin:$
PATH
[photopotter-pew14.rhcloud.com release]\> export LD_LIBRARY_PATH=$OPENSHIFT_DAT
A_DIR/lib
[photopotter-pew14.rhcloud.com release]\> python2.7
Python 2.7.3 (default, Apr 9 2014, 07:44:05)
[GCC 4.4.7 20120313 (Red Hat 4.4.7-4)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import cv2
Traceback (most recent call last):
File "", line 1, in
ImportError: No module named cv2
Hola segui este tutorial paso a paso pero no consigo configurar la cv2 para python:
ReplyDeleteen Openshift hize una app:
rhc app create servidorprueba python-2.6 --from-code https://github.com/openshift-quickstart/bottle-openshift-quickstart.git
Luego de configurar todo este post por ssh:
[servidorprueba-especievegetal.rhcloud.com release]\> export PATH=$OPENSHIFT_DA
TA_DIR/bin:$PATH
[servidorprueba-especievegetal.rhcloud.com release]\> export LD_LIBRARY_PATH=$O
PENSHIFT_DATA_DIR/lib
[servidorprueba-especievegetal.rhcloud.com release]\> python2.7 -V
Python 2.7.7
[servidorprueba-especievegetal.rhcloud.com release]\> python2.7
Python 2.7.7 (default, Feb 26 2015, 14:35:40)
[GCC 4.4.7 20120313 (Red Hat 4.4.7-11)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import numpy
>>> import cv2
Traceback (most recent call last):
File "", line 1, in
ImportError: No module named cv2
AYUDAaaaa. Gracias
try
Delete$ export PYTHONPATH=$OPENSHIFT_DATA_DIR/lib/python2.7/site-packages/
Gracias Stephen Nneji
DeleteYo reemplaze el opencv 2.4.3 por el 2.4.10 y posterormente utilice
export PYTHONPATH=$OPENSHIFT_DATA_DIR/lib/python2.7/site-packages/
*******RESULTADO***********
[servidorcv-especievegetal.rhcloud.com lib]\> cd $OPENSHIFT_DATA_DIR/lib/python2.7/site-packages/
[servidorcv-especievegetal.rhcloud.com site-packages]\> dir
cv2.so numpy README
cv.py numpy-1.9.2-py2.7.egg-info setuptools-0.6c11-py2.7.egg
easy-install.pth pip-1.1-py2.7.egg setuptools.pth
[servidorcv-especievegetal.rhcloud.com site-packages]\> python2.7
bash: python2.7: no se encontró la orden
[servidorcv-especievegetal.rhcloud.com site-packages]\> export PATH=$OPENSHIFT_DATA_DIR/bin:$PATH
[servidorcv-especievegetal.rhcloud.com site-packages]\>
[servidorcv-especievegetal.rhcloud.com site-packages]\> export LD_LIBRARY_PATH=$OPENSHIFT_DATA_DIR/lib
[servidorcv-especievegetal.rhcloud.com site-packages]\> python2.7
Python 2.7.3 (default, Mar 12 2015, 15:54:59)
[GCC 4.4.7 20120313 (Red Hat 4.4.7-11)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import numpy
>>> import cv2
>>> import cv
>>> from cv import CreateImageHeader, SetData, GetMat, IPL_DEPTH_8U, CV_CHAIN_APPROX_NONE
>>> from cv2 import cvtColor, findContours, COLOR_BGR2GRAY, RETR_TREE
>>>
Hola Stephen Nneji , tengo un problema ya logre configurar el opencv y python. pero error..
ReplyDeleteCMD...
$ rhc ssh servidorcv
Welcome to OpenShift shell
This shell will assist you in managing OpenShift applications.
!!! IMPORTANT !!! IMPORTANT !!! IMPORTANT !!!
Shell access is quite powerful and it is possible for you to
accidentally damage your application. Proceed with care!
If worse comes to worst, destroy your application with "rhc app delete"
and recreate it
!!! IMPORTANT !!! IMPORTANT !!! IMPORTANT !!!
Type "help" for more info.
[servidorcv-especievegetal.rhcloud.com 5501ecf2fcf9338e740001aa]\>
[servidorcv-especievegetal.rhcloud.com 5501ecf2fcf9338e740001aa]\> python -V
Python 2.6.6
[servidorcv-especievegetal.rhcloud.com 5501ecf2fcf9338e740001aa]\> python2.7 -V
bash: python2.7: command not found
[servidorcv-especievegetal.rhcloud.com 5501ecf2fcf9338e740001aa]\> export PATH=
$OPENSHIFT_DATA_DIR/bin:$PATH
[servidorcv-especievegetal.rhcloud.com 5501ecf2fcf9338e740001aa]\> export LD_LI
BRARY_PATH=$OPENSHIFT_DATA_DIR/lib
[servidorcv-especievegetal.rhcloud.com 5501ecf2fcf9338e740001aa]\> python2.7 -V
Python 2.7.3
[servidorcv-especievegetal.rhcloud.com 5501ecf2fcf9338e740001aa]\>
**********************************************************************************************************
Al ejecutar mi app python utiliza el python por defecto 2.6. ¿Como logro establecer por defector el python 2.7?
Look at the answer on this link
Deletehttp://stackoverflow.com/questions/19256127/two-versions-of-python-on-linux-how-to-make-2-7-the-default
Hi, This post helped me a lot while setting up OpenCV on OpenShift platform. This solution works like a charm. I just want to add something. Someone who is trying to compile an OpenCV c++ code, will have to set one more environmental variable named PKG_CONFIG_PATH.
ReplyDeleteexport PKG_CONFIG_PATH=$OPENSHIFT_DATA_DIR/lib/pkgconfig/
Hope it helps.
Thanks again.
This comment has been removed by the author.
ReplyDelete