问题需求
在docker中无法使用opencv显示图像,调试代码非常的困难。报错如下
The function is not implemented. Rebuild the library with Windows, GTK+ 2.x or Cocoa support.
解决办法
- 第一步,进入docker中,安装libgtk2.0-dev 和 pkg-config库。
- 下载opencv4.4.0
- 编译安装,注意使用以下编译选项。根据apollo中install_opencv.sh中来具体如下
注意: 一定要将 -DWITH_GTK=ON设置为ON 。否则无法支持gtk选项。
mkdir build && cd build
cmake .. \
-DCMAKE_INSTALL_PREFIX=/opt/apollo/sysroot \
-DCMAKE_BUILD_TYPE=Release \
-DBUILD_SHARED_LIBS=ON \
-DENABLE_PRECOMPILED_HEADERS=OFF \
-DOPENCV_GENERATE_PKGCONFIG=ON \
-DBUILD_EXAMPLES=OFF \
-DBUILD_DOCS=OFF \
-DBUILD_TESTS=OFF \
-DBUILD_PERF_TESTS=OFF \
-DBUILD_JAVA=OFF \
-DBUILD_PROTOBUF=OFF \
-DPROTOBUF_UPDATE_FILES=ON \
-DINSTALL_C_EXAMPLES=OFF \
-DWITH_GTK=ON \
-DWITH_IPP=OFF \
-DWITH_ITT=OFF \
-DWITH_TBB=OFF \
-DWITH_EIGEN=ON \
-DWITH_FFMPEG=ON \
-DWITH_LIBV4L=ON \
-DWITH_OPENMP=ON \
-DWITH_OPENNI=ON \
-DWITH_OPENCL=ON \
-DWITH_WEBP=ON \
-DOpenGL_GL_PREFERENCE=GLVND \
-DBUILD_opencv_python2=OFF \
-DBUILD_opencv_python3=ON \
-DBUILD_NEW_PYTHON_SUPPORT=ON \
-DPYTHON_DEFAULT_EXECUTABLE="$(which python3)" \
-DOPENCV_PYTHON3_INSTALL_PATH="/usr/local/lib/python$(py3_version)/dist-packages" \
-DOPENCV_ENABLE_NONFREE=ON \
-DCV_TRACE=OFF \
- 安装。
sudo make install
- 将现有的容器保存。
docker commit -m "add opencv gtk on" 041498c0b97f apolloauto/apollo:dev-x86_64-18.04-20200914_0742_opencv
- 退出apollo docker。
- 删除原来镜像,并将新的镜像重命名为原来镜像名字。请对照自己的镜像进行修改。
// commit镜像
docker commit -m "add opencv gtk on" 041498c0b97f apolloauto/apollo:dev-x86_64-18.04-20200914_0742_opencv
// 删除原有镜像
docker rmi apolloauto/apollo:dev-x86_64-18.04-20200914_0742 -f
// 将opencv镜像重命名为原来镜像名
docker tag apolloauto/apollo:dev-x86_64-18.04-20200914_0742_opencv apolloauto/apollo:dev-x86_64-18.04-20200914_0742
// 删除opencv镜像tag
docker rmi apolloauto/apollo:dev-x86_64-18.04-20200914_0742_opencv
- 重新启动镜像即可以显示opencv图像。