Install OpenCV in a Docker container

匿名 (未验证) 提交于 2019-12-03 02:56:01

问题:

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.

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 

回答1:

Fixed with a slightly different set-up



回答2:

Thanks for posting this. I ran into the same issue and tried your solution and although it seemed to install OpenCV it left me with an issue of conflicting versions of the Python six library so I took a different route. I think a simpler way to do this is to install Anaconda in your container and then add OpenCV. I'm using Python 2 so my entire Dockerfile to get OpenCvv installed is just:

FROM continuumio/anaconda EXPOSE 5000  ADD . /code-directory WORKDIR code-directory RUN conda install opencv  CMD ["python", "run-code.py"] 

This will install Anaconda from the continuumio/anaconda Dockerfile and then it will use Anaconda to install opencv. There is a seperate continuumio Dockerfile for Python 3 if you need that as well.



回答3:

Here's an image that is built on Ubuntu 16.04 with Python2 + Python3 + OpenCV. You can pull it using docker pull chennavarri/ubuntu_opencv_python

Here's the Dockerfile (provided in the same dockerhub repo mentioned above) that will install opencv for both python2 and python3 on Ubuntu 16.04 and also sets the appropriate raw1394 link. Copied from https://github.com/chennavarri/docker-ubuntu-python-opencv

FROM ubuntu:16.04 MAINTAINER Chenna Varri  RUN apt-get update RUN apt-get install -y build-essential apt-utils  RUN apt-get install -y cmake git libgtk2.0-dev pkg-config libavcodec-dev \   libavformat-dev libswscale-dev RUN  apt-get update && apt-get install -y python-dev python-numpy \   python3 python3-pip python3-dev libtbb2 libtbb-dev \   libjpeg-dev libjasper-dev libdc1394-22-dev \   python-opencv libopencv-dev libav-tools python-pycurl \   libatlas-base-dev gfortran webp qt5-default libvtk6-dev zlib1g-dev  RUN pip3 install numpy  RUN apt-get install -y python-pip RUN pip install --upgrade pip  RUN cd ~/ &&\     git clone https://github.com/Itseez/opencv.git &&\     git clone https://github.com/Itseez/opencv_contrib.git &&\     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  # Set the appropriate link RUN ln /dev/null /dev/raw1394  RUN cd ~/opencv 

Some additional instructions for people newly starting with Docker:

  • In the directory where you put this Dockerfile, build the docker image as docker build -t ubuntu_cv .

  • Once the image is built, you can check by doing docker images

    REPOSITORY   TAG       IMAGE ID      CREATED             SIZE  ubuntu_cv  latest    6210ddd6346b   24 minutes ago      2.192 GB 
  • You can start a docker container as docker run -t -i ubuntu_cv:latest



回答4:

from    ubuntu:12.10  # Ubuntu sides with libav, I side with ffmpeg. run echo "deb http://ppa.launchpad.net/jon-severinsson/ffmpeg/ubuntu quantal main" >> /etc/apt/sources.list run apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 1DB8ADC1CFCA9579   run apt-get update run apt-get install -y -q wget curl run apt-get install -y -q build-essential run apt-get install -y -q cmake run apt-get install -y -q python2.7 python2.7-dev run wget 'https://pypi.python.org/packages/2.7/s/setuptools/setuptools-0.6c11-py2.7.egg' && /bin/sh setuptools-0.6c11-py2.7.egg && rm -f setuptools-0.6c11-py2.7.egg run curl 'https://raw.github.com/pypa/pip/master/contrib/get-pip.py' | python2.7 run pip install numpy run apt-get install -y -q libavformat-dev libavcodec-dev libavfilter-dev libswscale-dev run apt-get install -y -q libjpeg-dev libpng-dev libtiff-dev libjasper-dev zlib1g-dev libopenexr-dev libxine-dev libeigen3-dev libtbb-dev add build_opencv.sh /build_opencv.sh run /bin/sh /build_opencv.sh run rm -rf /build_opencv.sh 


易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!