【问题标题】:Nvidia Jetson Tx2 Opencv Compiling in DockerNvidia Jetson Tx2 Opencv 在 Docker 中编译
【发布时间】:2020-11-17 03:08:22
【问题描述】:

您好,我之前在我的主机或几个基于 arm 的系统中编译过几次 opencv。由于您现在在基于 arm 的系统上编译 opencv 需要更长的时间,所以我使用 Quemu 将 x86 处理器虚拟化为 arm64,并从 nvidia dochub 页面中提取了 nvidia jetpack。我正在使用“nvcr.io/nvidia/l4t-base”,所以我有基于 aarch64 的 docker env。

当我在这个 docker env 中遵循我的基本 cmake 配置时。

cmake -D CMAKE_BUILD_TYPE=RELEASE \
      -D WITH_CUDA=ON \
      -D CUDA_ARCH_BIN=6.2 \
      -D CUDA_ARCH_PTX="" \
      -D ENABLE_FAST_MATH=ON \
      -D CUDA_FAST_MATH=ON \
      -D WITH_CUBLAS=ON \
      -D WITH_LIBV4L=ON \
      -D WITH_GSTREAMER=ON \
      -D WITH_GSTREAMER_0_10=OFF \
      -D WITH_QT=ON \
      -D WITH_OPENGL=ON \
      -D OPENCV_EXTRA_MODULES_PATH=/../opencv3/opencv_contrib-3.4.9/modules \
      -D CPACK_BINARY_DEB=ON \
      ../

我附上了以下错误日志。但基本上它说“致命错误:sys/videoio.h:没有这样的文件或目录”所以我之前遇到了videdev.h错误,但我解决了安装v4l包的问题。

有趣的一点是当我只给 cmake .. 它工作并安装 opencv 但默认 conf。没有 cuda 和额外的 lib 选项。当我在“cmake ..”命令之后检查时,即使我看到配置完成,日志文件中仍然存在相同的致命错误。

我无法弄清楚这个错误。即使它使用默认的 cmake 命令显示相同的错误,但配置完成。当我应用 cuda config 时,它说同样的错误,但无法完成配置。我完全确定 cmake 有任何错误的参数,因为我在我的 jetson tx2 上使用过它,它工作得非常完美。

你有什么想法吗?顺便说一句,nvidia docker 有 10.2 cuda 支持我用 nvcc -V 命令检查过也许在 docker env 中编译带有 cuda 支持的 opencv 是不可能的,或者我应该以不同的方式启动 cuda 支持的 docker 容器吗?

错误日志:https://paste.ubuntu.com/p/w9hjBxqJ6D/

输出日志:https://paste.ubuntu.com/p/rqsvq356dR/

这是另一个输出

    linked by target "opencv_annotation" in directory /opencv3/opencv-3.4.9/apps/annotation
    linked by target "opencv_visualisation" in directory /opencv3/opencv-3.4.9/apps/visualisation
    linked by target "opencv_interactive-calibration" in directory /opencv3/opencv-3.4.9/apps/interactive-calibration
    linked by target "opencv_version" in directory /opencv3/opencv-3.4.9/apps/version
CUDA_nppist_LIBRARY (ADVANCED)
    linked by target "opencv_cudev" in directory /opencv3/opencv-3.4.9/modules/cudev
    linked by target "opencv_cudev" in directory /opencv3/opencv-3.4.9/modules/cudev
    linked by target "opencv_test_cudev" in directory /opencv3/opencv-3.4.9/modules/cudev/test
    linked by target "opencv_test_core" in directory /opencv3/opencv-3.4.9/modules/core
    linked by target "opencv_perf_core" in directory /opencv3/opencv-3.4.9/modules/core
    linked by target "opencv_core" in directory /opencv3/opencv-3.4.9/modules/core
    linked by target "opencv_core" in directory /opencv3/opencv-3.4.9/modules/core
    linked by target "opencv_test_cudaarithm" in directory /opencv3/opencv-3.4.9/modules/cudaarithm
    linked by target "opencv_cudaarithm" in directory /opencv3/opencv-3.4.9/modules/cudaarithm
    linked by target "opencv_cudaarithm" in directory /opencv3/opencv-3.4.9/modules/cudaarithm
    linked by target "opencv_perf_cudaarithm" in directory /opencv3/opencv-3.4.9/modules/cudaarithm
    linked by target "opencv_flann" in directory /opencv3/opencv-3.4.9/modules/flann
    linked by target "opencv_flann" in directory /opencv3/opencv-3.4.9/modules/flann
    linked by target "opencv_test_flann" in directory /opencv3/opencv-3.4.9/modules/flann
    linked by target "opencv_perf_imgproc" in directory /opencv3/opencv-3.4.9/modules/imgproc
    linked by target "opencv_test_imgproc" in directory /opencv3/opencv-3.4.9/modules/imgproc
    linked by target "opencv_imgproc" in directory /opencv3/opencv-3.4.9/modules/imgproc
    linked by target "opencv_imgproc" in directory /opencv3/opencv-3.4.9/modules/imgproc
    linked by target "opencv_test_ml" in directory /opencv3/opencv-3.4.9/modules/ml
    linked by target "opencv_ml" in directory /opencv3/opencv-3.4.9/modules/ml
    linked by target "opencv_ml" in directory /opencv3/opencv-3.4.9/modules/ml
    linked by target "opencv_video" in directory /opencv3/opencv-3.4.9/modules/video
    linked by target "opencv_video" in directory /opencv3/opencv-3.4.9/modules/video
    linked by target "opencv_perf_video" in directory /opencv3/opencv-3.4.9/modules/video
    linked by target "opencv_test_video" in directory /opencv3/opencv-3.4.9/modules/video
    linked by target "opencv_test_cudabgsegm" in directory /opencv3/opencv-3.4.9/modules/cudabgsegm
    linked by target "opencv_cudabgsegm" in directory /opencv3/opencv-3.4.9/modules/cudabgsegm
    linked by target "opencv_cudabgsegm" in directory /opencv3/opencv-3.4.9/modules/cudabgsegm
    linked by target "opencv_perf_cudabgsegm" in directory /opencv3/opencv-3.4.9/modules/cudabgsegm
    linked by target "opencv_test_cudafilters" in directory /opencv3/opencv-3.4.9/modules/cudafilters
    linked by target "opencv_perf_cudafilters" in directory /opencv3/opencv-3.4.9/modules/cudafilters
    linked by target "opencv_cudafilters" in directory /opencv3/opencv-3.4.9/modules/cudafilters
    linked by target "opencv_cudafilters" in directory /opencv3/opencv-3.4.9/modules/cudafilters
    linked by target "opencv_test_cudaimgproc" in directory /opencv3/opencv-3.4.9/modules/cudaimgproc
    linked by target "opencv_cudaimgproc" in directory /opencv3/opencv-3.4.9/modules/cudaimgproc
    linked by target "opencv_cudaimgproc" in directory /opencv3/opencv-3.4.9/modules/cudaimgproc
    linked by target "opencv_perf_cudaimgproc" in directory /opencv3/opencv-3.4.9/modules/cudaimgproc
    linked by target "opencv_test_cudawarping" in directory /opencv3/opencv-3.4.9/modules/cudawarping
    linked by target "opencv_cudawarping" in directory /opencv3/opencv-3.4.9/modules/cudawarping
    linked by target "opencv_cudawarping" in directory /opencv3/opencv-3.4.9/modules/cudawarping
    linked by target "opencv_perf_cudawarping" in directory /opencv3/opencv-3.4.9/modules/cudawarping
    linked by target "opencv_dnn" in directory /opencv3/opencv-3.4.9/modules/dnn
    linked by target "opencv_dnn" in directory /opencv3/opencv-3.4.9/modules/dnn
    linked by target "opencv_perf_dnn" in directory /opencv3/opencv-3.4.9/modules/dnn
    linked by target "opencv_test_dnn" in directory /opencv3/opencv-3.4.9/modules/dnn
    linked by target "opencv_features2d" in directory /opencv3/opencv-3.4.9/modules/features2d
    linked by target "opencv_features2d" in directory /opencv3/opencv-3.4.9/modules/features2d
    linked by target "opencv_perf_features2d" in directory /opencv3/opencv-3.4.9/modules/features2d
    linked by target "opencv_test_features2d" in directory /opencv3/opencv-3.4.9/modules/features2d
    linked by target "opencv_imgcodecs" in directory /opencv3/opencv-3.4.9/modules/imgcodecs
    linked by target "opencv_imgcodecs" in directory /opencv3/opencv-3.4.9/modules/imgcodecs
    linked by target "opencv_perf_imgcodecs" in directory /opencv3/opencv-3.4.9/modules/imgcodecs
    linked by target "opencv_test_imgcodecs" in directory /opencv3/opencv-3.4.9/modules/imgcodecs
    linked by target "opencv_test_photo" in directory /opencv3/opencv-3.4.9/modules/photo
    linked by target "opencv_photo" in directory /opencv3/opencv-3.4.9/modules/photo
    linked by target "opencv_photo" in directory /opencv3/opencv-3.4.9/modules/photo
    linked by target "opencv_perf_photo" in directory /opencv3/opencv-3.4.9/modules/photo
    linked by target "opencv_test_shape" in directory /opencv3/opencv-3.4.9/modules/shape
    linked by target "opencv_shape" in directory /opencv3/opencv-3.4.9/modules/shape
    linked by target "opencv_shape" in directory /opencv3/opencv-3.4.9/modules/shape
    linked by target "opencv_test_videoio" in directory /opencv3/opencv-3.4.9/modules/videoio
    linked by target "opencv_videoio" in directory /opencv3/opencv-3.4.9/modules/videoio
    linked by target "opencv_videoio" in directory /opencv3/opencv-3.4.9/modules/videoio
    linked by target "opencv_perf_videoio" in directory /opencv3/opencv-3.4.9/modules/videoio
    linked by target "opencv_calib3d" in directory /opencv3/opencv-3.4.9/modules/calib3d
    linked by target "opencv_calib3d" in directory /opencv3/opencv-3.4.9/modules/calib3d
  
    linked by target "opencv_perf_stitching" in directory /opencv3/opencv-3.4.9/modules/stitching
    linked by target "opencv_test_superres" in directory /opencv3/opencv-3.4.9/modules/superres
    linked by target "opencv_superres" in directory /opencv3/opencv-3.4.9/modules/superres
    linked by target "opencv_superres" in directory /opencv3/opencv-3.4.9/modules/superres
    linked by target "opencv_perf_superres" in directory /opencv3/opencv-3.4.9/modules/superres
    linked by target "opencv_test_videostab" in directory /opencv3/opencv-3.4.9/modules/videostab
    linked by target "opencv_videostab" in directory /opencv3/opencv-3.4.9/modules/videostab
    linked by target "opencv_videostab" in directory /opencv3/opencv-3.4.9/modules/videostab
    linked by target "opencv_traincascade" in directory /opencv3/opencv-3.4.9/apps/traincascade
    linked by target "opencv_createsamples" in directory /opencv3/opencv-3.4.9/apps/createsamples
    linked by target "opencv_annotation" in directory /opencv3/opencv-3.4.9/apps/annotation
    linked by target "opencv_visualisation" in directory /opencv3/opencv-3.4.9/apps/visualisation
    linked by target "opencv_interactive-calibration" in directory /opencv3/opencv-3.4.9/apps/interactive-calibration
    linked by target "opencv_version" in directory /opencv3/opencv-3.4.9/apps/version

Lats 进度:当我移除时

-DOPENCV_EXTRA_MODULES_PATH=$HOME/opencv_contrib-3.4.9/modules \
-DCUDA_TOOLKIT_ROOT_DIR=/usr/local/cuda-10.2 \
-DCUDA_ARCH_BIN=6.2 \
-DCUDA_ARCH_PTX="" \ 

配置完成,但我仍然需要 cuda 和额外的库

【问题讨论】:

  • 如果你没有在 cmake 中添加 CUDA,如果 CUDA EXIST,默认 cmake 会接受它为 ON。您确定您的 cuda 安装正确吗?
  • Cuda 存在。正如我上面写的 nvcc -V 给出了 cuda 版本,但我解决了启动 docker image host cuda 的问题。

标签: docker opencv cmake nvidia-jetson nvidia-docker


【解决方案1】:

通过启动 docker 映像主机 Cuda 组件并提供 cmake conf 解决。工具包的目录。重要的一点是,如果容器带有不同版本的 Cuda,则不应使用它。

使用主机cuda并给主机cuda组件目录或将它们复制到docker中

-D CUDA_TOOLKIT_ROOT_DIR=/usr/local/cuda-10.0 \

【讨论】:

    猜你喜欢
    • 2017-09-28
    • 1970-01-01
    • 2019-02-17
    • 2018-04-13
    • 1970-01-01
    • 2022-01-13
    • 2018-02-15
    • 2018-12-28
    • 2020-04-30
    相关资源
    最近更新 更多