docker镜像安装opencv
时间: 2025-01-11 11:51:16 浏览: 79
### 安装 OpenCV 及其贡献模块到 Docker 镜像
为了在 Docker 镜像中安装 OpenCV 和 `opencv_contrib`,需要遵循一系列特定的操作流程。这不仅涉及下载必要的软件包,还包括设置环境变量以及编译源码。
#### 创建并进入工作目录
首先,在宿主机上创建一个新的文件夹作为项目根目录,并切换至该路径下:
```bash
mkdir ~/opencv_docker && cd ~/opencv_docker
```
接着克隆官方 GitHub 仓库中的 OpenCV 和额外的功能库(即 opencv_contrib)。对于后者来说,如果计划利用某些高级特性,则必不可少[^1]。
#### 准备 CMake 构建选项
当准备通过 CMake 来构建 OpenCV 时,需指定额外的模块路径以便能够访问来自 contrib 的扩展功能。假设已经获取到了上述两个 Git 存储库的内容,那么可以通过如下方式传递给 cmake 命令:
```bash
-DOPENCV_EXTRA_MODULES_PATH=<path_to_opencv_contrib>/modules
```
这里 `<path_to_opencv_contrib>` 应替换为你实际存放 opencv_contrib 文件的位置。
#### 编写 Dockerfile 并定义构建过程
编写一个名为 `Dockerfile` 的文本文件,内容大致如下所示:
```dockerfile
FROM nvidia/cuda:11.3-base-ubuntu20.04
RUN apt-get update && \
DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \
build-essential \
cmake \
git \
wget \
unzip \
pkg-config \
libgtk-3-dev \
libavcodec-dev \
libavformat-dev \
libswscale-dev \
python3-dev \
python3-numpy \
libtbb2 \
libtbb-dev \
libjpeg-dev \
libpng-dev \
libtiff-dev \
libdc1394-22-dev \
ffmpeg \
curl \
ca-certificates \
libgstreamer-plugins-base1.0-dev \
gstreamer1.0-tools \
gstreamer1.0-x \
gstreamer1.0-libav \
gstreamer1.0-gl \
gstreamer1.0-gtk3 \
gstreamer1.0-qt5 \
gstreamer1.0-pulseaudio \
libv4l-dev \
v4l-utils \
libopenblas-dev \
liblapack-dev \
gfortran \
protobuf-compiler \
libprotobuf-dev \
libgoogle-glog-dev \
libgflags-dev \
liblmdb-dev \
libleveldb-dev \
libsnappy-dev \
libhdf5-dev \
openexr \
libwebp-dev \
qtbase5-dev \
libatlas-base-dev \
libjasper-dev \
libilmbase-dev \
libopenexr-dev \
libgphoto2-dev \
libeigen3-dev \
doxygen \
graphviz \
pandoc \
texlive-latex-extra \
latexmk \
ghostscript \
imagemagick \
libcurl4-openssl-dev \
libssl-dev \
libxml2-dev \
libxslt1-dev \
swig \
python3-setuptools \
python3-wheel \
python3-scipy \
python3-matplotlib \
python3-skimage \
python3-h5py \
python3-lxml \
python3-tk \
python3-yaml \
python3-boto \
python3-botocore \
python3-dateutil \
python3-docutils \
python3-jinja2 \
python3-markupsafe \
python3-psutil \
python3-pygments \
python3-six \
python3-sphinx \
python3-sphinx-rtd-theme \
python3-sphinxcontrib-programoutput \
python3-sphinxcontrib-websupport \
python3-tabulate \
python3-termcolor \
python3-werkzeug \
python3-zmq \
python3-grpcio \
python3-grpcio-tools \
python3-googleapis-common-protos \
python3-opencv \
python3-pip \
python3-virtualenv \
python-is-python3 \
&& rm -rf /var/lib/apt/lists/*
WORKDIR /root/
# 下载 OpenCV 源代码
RUN git clone https://github.com/opencv/opencv.git opencv && \
git clone https://github.com/opencv/opencv_contrib.git opencv_contrib
# 设置 CUDA_ARCH_BIN 版本号 (例如 Turing)
ENV CUDA_GENERATION=Turing
# 开始构建 OpenCV
WORKDIR /root/opencv/build/
RUN cmake -DCMAKE_BUILD_TYPE=Release \
-DCMAKE_INSTALL_PREFIX=/usr/local \
-DBUILD_EXAMPLES=ON \
-DWITH_CUDA=ON \
-DCUDA_ARCH_BIN=${CUDA_GENERATION} \
-DOPENCV_EXTRA_MODULES_PATH=/root/opencv_contrib/modules .. && \
make -j$(nproc) && \
make install && \
ldconfig
CMD ["bash"]
```
此脚本基于 NVIDIA 提供的基础镜像,并集成了大量依赖项以支持完整的 OpenCV 功能集合。注意设置了 `-DWITH_CUDA=ON` 参数开启 GPU 加速的支持,并指定了相应的 CUDA 计算能力版本 (`CUDA_GENERATION`)。此外还加入了指向 `opencv_contrib` 中 modules 路径的配置。
完成以上步骤之后就可以运行 `docker build . -t my_opencv_image` 来创建自定义的 Docker 映像了。最后一步则是启动容器实例来进行测试或进一步开发活动。
阅读全文
相关推荐

















