Docker openCV安装问题



我目前正试图使用Docker运行应用程序,但在启动应用程序时收到以下错误消息:

error while loading shared libraries: libopencv_highgui.so.4.4: cannot open shared object file: No such file or directory

我认为docker文件中出现了问题,并且安装不完整或不正确。因此,我在帖子末尾添加了关于OpenCV的部分。我是错过了重要的一步,还是在dockerfile中出现了错误?

FROM nvidia/cuda:10.2-devel-ubuntu18.04 as TOOLKITS
RUN apt-get update && apt-get install -y apt-utils
# Install additional packages
RUN apt-get install -y 
build-essential 
bzip2 
checkinstall 
cmake 
curl 
gcc 
gfortran 
git 
pkg-config 
python3-pip 
python3-dev 
python3-numpy 
nano  
openexr 
unzip 
wget 
yasm

FROM TOOLKITS as GIT_PULLS
WORKDIR /
RUN git clone https://github.com/opencv/opencv.git
RUN git clone https://github.com/opencv/opencv_contrib.git
FROM GIT_PULLS as OPENCV_PREPERATION
RUN apt-get install -y 
libgtk-3-dev 
libavcodec-dev 
libavformat-dev 
libswscale-dev 
libv4l-dev 
libxvidcore-dev 
libx264-dev 
libjpeg-dev 
libpng-dev 
libtiff-dev 
libatlas-base-dev 
libtbb2 
libtbb-dev 
libdc1394-22-dev

FROM OPENCV_PREPERATION as OPENCV_CMAKE
WORKDIR /
RUN mkdir /opencv/build
WORKDIR /opencv/build
RUN cmake 
-DCMAKE_BUILD_TYPE=RELEASE 
-DCMAKE_INSTALL_PREFIX=/usr/local 
-DINSTALL_C_EXAMPLES=ON 
-DINSTALL_PYTHON_EXAMPLES=ON 
-DWITH_TBB=ON 
-DWITH_V4L=ON 
-DOPENCV_GENERATE_PKGCONFIG=ON 
-DWITH_OPENGL=ON 
-DOPENCV_EXTRA_MODULES_PATH=../../opencv_contrib/modules 
-DOPENCV_PC_FILE_NAME=opencv.pc 
-DBUILD_EXAMPLES=ON ..
FROM OPENCV_CMAKE as BUILD_OPENCV_MAKE
RUN make -j $(nproc)
RUN make install
FROM TOOLKITS 
COPY --from=XXX /opencv /opencv
COPY --from=XXX /opencv_contrib /opencv_contrib

我之前在Docker中使用Python映像安装OpenCV时也遇到过同样的问题。您可能不需要这么多依赖关系,但这是一种选择。我会有一个轻量级的版本,适合我的情况。请尝试以下代码:

重载版本:

FROM python:3.7
RUN apt-get update 
&& apt-get install -y 
build-essential 
cmake 
git 
wget 
unzip 
yasm 
pkg-config 
libswscale-dev 
libtbb2 
libtbb-dev 
libjpeg-dev 
libpng-dev 
libtiff-dev 
libavformat-dev 
libpq-dev 
&& rm -rf /var/lib/apt/lists/*
RUN pip install numpy
WORKDIR /
ENV OPENCV_VERSION="4.1.1"
# install opencv-python from its source 
RUN wget https://github.com/opencv/opencv/archive/${OPENCV_VERSION}.zip 
&& unzip ${OPENCV_VERSION}.zip 
&& mkdir /opencv-${OPENCV_VERSION}/cmake_binary 
&& cd /opencv-${OPENCV_VERSION}/cmake_binary 
&& cmake -DBUILD_TIFF=ON 
-DBUILD_opencv_java=OFF 
-DWITH_CUDA=OFF 
-DWITH_OPENGL=ON 
-DWITH_OPENCL=ON 
-DWITH_IPP=ON 
-DWITH_TBB=ON 
-DWITH_EIGEN=ON 
-DWITH_V4L=ON 
-DBUILD_TESTS=OFF 
-DBUILD_PERF_TESTS=OFF 
-DCMAKE_BUILD_TYPE=RELEASE 
-DCMAKE_INSTALL_PREFIX=$(python3.7 -c "import sys; print(sys.prefix)") 
-DPYTHON_EXECUTABLE=$(which python3.7) 
-DPYTHON_INCLUDE_DIR=$(python3.7 -c "from distutils.sysconfig import get_python_inc; print(get_python_inc())") 
-DPYTHON_PACKAGES_PATH=$(python3.7 -c "from distutils.sysconfig import get_python_lib; print(get_python_lib())") 
.. 
&& make install 
&& rm /${OPENCV_VERSION}.zip 
&& rm -r /opencv-${OPENCV_VERSION}
RUN ln -s 
/usr/local/python/cv2/python-3.7/cv2.cpython-37m-x86_64-linux-gnu.so 
/usr/local/lib/python3.7/site-packages/cv2.so
RUN apt-get --fix-missing update && apt-get --fix-broken install && apt-get install -y poppler-utils && apt-get install -y tesseract-ocr && 
apt-get install -y libtesseract-dev && apt-get install -y libleptonica-dev && ldconfig && apt install -y libsm6 libxext6 && apt install -y python-opencv

轻量级版本:

FROM python:3.7 
RUN apt-get update -y 
RUN apt-update && apt install -y libsm6 libxext6 

就我的情况而言,我最终使用了重载版本,只是为了节省一些麻烦,两个版本都应该可以正常工作。为了您的参考,也请参阅此链接,并感谢Neo Anderson的大力帮助。

我在这个过程中也遇到了很多问题,并找到了这个存储库:https://github.com/janza/docker-python3-opencv克隆或下载它,并根据您的要求添加其他依赖项和文件。

apt-get update -y
apt install -y libsm6 libxext6
apt update
pip install pyglview
apt install -y libgl1-mesa-glx

最新更新