在Docker容器中安装OpenCV

我试图Dockerise一个Python应用程序,这取决于OpenCV。 我已经尝试了几种不同的方法,但我一直在… ImportError: No module named cv2当我尝试运行应用程序时, ImportError: No module named cv2

这是我目前的Dockerfile。

 FROM python:2.7 MAINTAINER Ewan Valentine <ewan@theladbible.com> 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 

和我的requirements.txt文件

 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 

固定与稍微不同的设置

 FROM python:2.7 MAINTAINER Ewan Valentine <ewan@theladbible.com> 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/Itseez/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 

感谢张贴这个。 我遇到了同样的问题,并尝试了你的解决scheme,虽然它似乎安装OpenCV它留给我一个Python六库的冲突版本的问题,所以我采取了不同的路线。 我认为更简单的方法是在你的容器中安装Anaconda,然后添加OpenCV。 我正在使用Python 2,所以我的整个Dockerfile来安装OpenCvv只是:

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

这将从continuumio / anaconda Dockerfile安装Anaconda,然后使用Anaconda安装opencv。 如果你还需要的话,还有一个Python 3的独立连续Dockerfile。

这是一个在Ubuntu 16.04上搭buildPython2 + Python3 + OpenCV的图片。 你可以使用docker pull chennavarri/ubuntu_opencv_python

这里是Dockerfile(在上面提到的dockerhub仓库中提供),它将在Ubuntu 16.04上安装python2和python3的opencv,并设置合适的raw1394链接。 从https://github.com/chennavarri/docker-ubuntu-python-opencv复&#x5236;

 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 

对于新开始使用Docker的人员的一些额外说明:

  • 在放置此Dockerfile的目录中,将docker图像docker build -t ubuntu_cv .

  • 一旦图像被build立,您可以通过执行docker images来检查

     REPOSITORY TAG IMAGE ID CREATED SIZE ubuntu_cv latest 6210ddd6346b 24 minutes ago 2.192 GB 
  • 你可以启动一个docker run -t -i ubuntu_cv:latest容器作为docker run -t -i ubuntu_cv:latest

 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