Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Install OpenCV in a Docker container

I'm attempting to Dockerise a Python application, which depends on OpenCV. I've tried several different ways, but I keep getting... ImportError: No module named cv2 when I attempt to run the application.

Here's my current Dockerfile.

FROM python:2.7  MAINTAINER Ewan Valentine <[email protected]>  RUN mkdir -p /usr/src/app  WORKDIR /usr/src/app   # Various Python and C/build deps RUN apt-get update && apt-get install -y \      wget \     build-essential \      cmake \      git \     pkg-config \     python-dev \      python-opencv \      libopencv-dev \      libav-tools  \      libjpeg-dev \      libpng-dev \      libtiff-dev \      libjasper-dev \      libgtk2.0-dev \      python-numpy \      python-pycurl \      libatlas-base-dev \     gfortran \     webp \      python-opencv   # Install Open CV - Warning, this takes absolutely forever RUN cd ~ && git clone https://github.com/Itseez/opencv.git && \      cd opencv && \     git checkout 3.0.0 && \     cd ~ && git clone https://github.com/Itseez/opencv_contrib.git && \     cd opencv_contrib && \     git checkout 3.0.0 && \     cd ~/opencv && mkdir -p build && cd build && \     cmake -D CMAKE_BUILD_TYPE=RELEASE \     -D CMAKE_INSTALL_PREFIX=/usr/local \      -D INSTALL_C_EXAMPLES=ON \      -D INSTALL_PYTHON_EXAMPLES=ON \      -D OPENCV_EXTRA_MODULES_PATH=~/opencv_contrib/modules \      -D BUILD_EXAMPLES=OFF .. && \     make -j4 && \     make install && \      ldconfig  COPY requirements.txt /usr/src/app/ RUN pip install --no-cache-dir -r requirements.txt  COPY . /usr/src/app  

And my requirements.txt file

Flask==0.8 gunicorn==0.14.2 requests==0.11.1 bs4==0.0.1 nltk==3.2.1 pymysql==0.7.2 xlsxwriter==0.8.5 numpy==1.11 Pillow==3.2.0 cv2==1.0 pytesseract==0.1 
like image 750
Ewan Valentine Avatar asked Apr 26 '16 10:04

Ewan Valentine


People also ask

Where should I install OpenCV?

By default OpenCV will be installed to the /usr/local directory, all files will be copied to following locations: /usr/local/bin - executable files.

Can I pip install OpenCV?

OpenCV can be installed using pip. The following command is run in the command prompt to install OpenCV. This command will start downloading and installing packages related to the OpenCV library. Once done, the message of successful installation will be displayed.

Is OpenCV and cv2 same?

cv2 (old interface in old OpenCV versions was named as cv ) is the name that OpenCV developers chose when they created the binding generators. This is kept as the import name to be consistent with different kind of tutorials around the internet.


1 Answers

Fixed with a slightly different set-up

FROM python:2.7  MAINTAINER Ewan Valentine <[email protected]>  RUN mkdir -p /usr/src/app  WORKDIR /usr/src/app   # Various Python and C/build deps RUN apt-get update && apt-get install -y \      wget \     build-essential \      cmake \      git \     unzip \      pkg-config \     python-dev \      python-opencv \      libopencv-dev \      libav-tools  \      libjpeg-dev \      libpng-dev \      libtiff-dev \      libjasper-dev \      libgtk2.0-dev \      python-numpy \      python-pycurl \      libatlas-base-dev \     gfortran \     webp \      python-opencv \      qt5-default \     libvtk6-dev \      zlib1g-dev   # Install Open CV - Warning, this takes absolutely forever RUN mkdir -p ~/opencv cd ~/opencv && \     wget https://github.com/opencv/opencv/archive/3.0.0.zip && \     unzip 3.0.0.zip && \     rm 3.0.0.zip && \     mv opencv-3.0.0 OpenCV && \     cd OpenCV && \     mkdir build && \      cd build && \     cmake \     -DWITH_QT=ON \      -DWITH_OPENGL=ON \      -DFORCE_VTK=ON \     -DWITH_TBB=ON \     -DWITH_GDAL=ON \     -DWITH_XINE=ON \     -DBUILD_EXAMPLES=ON .. && \     make -j4 && \     make install && \      ldconfig  COPY requirements.txt /usr/src/app/ RUN pip install --no-cache-dir -r requirements.txt  COPY . /usr/src/app  
like image 172
Ewan Valentine Avatar answered Sep 29 '22 19:09

Ewan Valentine