Kinaconの技術ブログ

Ubuntuはじめました。

dockerfileでpython/opencv環境を構築する。opencv_contribも入れました。

f:id:m-oota-711:20180824075049j:plain

前回、dockerで構築したOpenCV3.4.3にopencv_contribも追加しました。



kinacon.hatenablog.com


作業環境

・Ubuntu18.04.1
f:id:m-oota-711:20181015133547p:plain

・Docker-ce 18.06.1
f:id:m-oota-711:20181015133732p:plain





作業内容

dockerfile

opencv contribには一部商用利用できないアルゴリズムが含まれる
xfeatures2dというモジュールでSURFやSIFTが含まれるようです。

これらを使用する場合には
CMAKEのオプションに-D OPENCV_ENABLE_NONFREE=ONを追加する必要がある。

FROM ubuntu:16.04

MAINTAINER kina <kina@kinacon.com>

ARG PYTHON_VERSION=3.7.0
ARG OPENCV_VERSION=3.4.3

# プロキシ設定
ENV USER=xxxx \
         PASS=xxxx \
         PROXY=xxxx.xxxx.xxxx.co.jp:8080

# プロキシ設定(pip)
ENV HTTP_PROXY=http://$USER:$PASS@$PROXY/ \
        HTTPS_PROXY=http://$USER:$PASS@$PROXY/

# プロキシ設定(apt)
RUN echo 'Acquire::http::proxy ''"'"http://${ID}:${PASS}@${PROXY}/"'";' \
    > /etc/apt/apt.conf

RUN apt update && \
         apt install -y --no-install-recommends \
               make \
               cmake \
               gcc \
               g++ \
               unzip \
               wget \
               build-essential \
               nano \
               zlib1g-dev \
               libffi-dev \
               libssl-dev && \
       apt clean && \
       rm -rf /var/lib/apt/lists/*


# プロキシ設定(wget)
RUN ( \
            echo "https_proxy=http://${USER}:${PASS}@${PROXY}"; \
            echo "use_proxy=on"; \
) | tee /etc/wgetrc

# python3 インストール
WORKDIR /tmp/python3
RUN wget --no-check-certificate https://www.python.org/ftp/python/${PYTHON_VERSION}/Python-${PYTHON_VERSION}.tgz && \
         tar zxf Python-${PYTHON_VERSION}.tgz && \
         rm Python-${PYTHON_VERSION}.tgz

WORKDIR /tmp/python3/Python-${PYTHON_VERSION}
RUN ./configure && make altinstall && make clean

WORKDIR /usr/local/bin/
RUN touch python3 && \
        ln -sf $(find -name python3.[0-9]) python3 && \
        touch pip3 && \
        ln -sf $(find -name pip3.[0-9]) pip3
RUN pip3 install --upgrade pip \
         numpy

# OpenCV3 インストール
RUN apt update && \
         apt install -y --no-install-recommends \
               ca-certificates \
               pkg-config \
               libgtk2.0-dev \
               libjpeg-dev libpng-dev \
               ffmpeg \
               libavcodec-dev \
               libavformat-dev \
               libavresample-dev \
               libswscale-dev \
               libv4l-dev \
               libtbb2 \
               libtbb-dev && \
    apt clean && \
    rm -rf /var/lib/apt/lists/*

RUN mkdir -p /tmp/opencv
WORKDIR /tmp/opencv
RUN wget https://github.com/opencv/opencv/archive/${OPENCV_VERSION}.zip && \
        unzip ${OPENCV_VERSION}.zip -d . && \
        mkdir /tmp/opencv/opencv-${OPENCV_VERSION}/build && \
        rm ${OPENCV_VERSION}.zip

RUN wget -O opencv_contrib.zip https://github.com/opencv/opencv_contrib/archive/${OPENCV_VERSION}.zip && \
	unzip opencv_contrib.zip && \
        rm opencv_contrib.zip

WORKDIR /tmp/opencv/opencv-${OPENCV_VERSION}/build/
RUN cmake -D CMAKE_BUILD_TYPE=RELEASE \
                    -D OPENCV_EXTRA_MODULES_PATH=/tmp/opencv/opencv_contrib-${OPENCV_VERSION}/modules/ \
                    -D BUILD_TESTS=OFF \
                    -D CMAKE_BUILD_TYPE=RELEASE \
                    -D BUILD_PERF_TESTS=OFF \
                    -D WITH_FFMPEG=ON \
                    -D WITH_TBB=ON .. && \
       make -j "$(nproc)" && \
       make install && \
       make clean

WORKDIR /tmp


以上。