我正在尝试Dockerise一个Python应用程序,它依赖于OpenCV。我已经尝试了几种不同的方法,但是当我尝试运行应用程序时,我总是得到... 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
9条答案
按热度按时间63lcw9qa1#
用稍微不同的设置修复
iugsix8n2#
感谢您发布这篇文章。我遇到了同样的问题,并尝试了您的解决方案,尽管它似乎安装了OpenCV,但它给我留下了Python 6库版本冲突的问题,所以我采取了不同的路线。我认为一个更简单的方法是在您的容器中安装Anaconda,然后添加OpenCV。我使用Python 2,所以我的整个Dockerfile安装OpenCvv只是:
这将从continuumio/anaconda Dockerfile安装Anaconda,然后它将使用Anaconda安装opencv。如果你需要,还有一个单独的continuumio Dockerfile用于Python 3。
2admgd593#
下面是一个image,它是在Ubuntu 16.04上用Python2 + Python3 + OpenCV构建的。
下面是Dockerfile(在上面提到的同一个dockerhub repo中提供),它将在Ubuntu 16.04上为python2和python3安装opencv,并设置相应的raw1394链接。
对于刚开始使用Docker的人的一些额外说明:
docker build -t ubuntu_cv .
docker images
检查docker run -t -i ubuntu_cv:latest
fruv7luv4#
要在docker中安装OpenCV(latest)...步骤与Linux版本类似,只是符号链接路径不同:
这对我很有效!
chhqkbe15#
对于一些应用程序(比如我的例子),你可以使用python包opencv-python-headless。如果你所做的只是基于CPU的opencv活动,这将直接在docker镜像中工作。
通过requirements.txt中的此行
3zwtqj6y6#
wyyhbhjk7#
我使用这个Dockerfile,它工作起来很有魅力
du7egjpx8#
如果你想在CUDA中使用OpenCV dnn,在GPU中使用Torch(可选),我推荐这样做:
你就可以跑了
你会得到这样的结果:
a7qyws3x9#
就加上
您的requirements.txt:)