gpt4 book ai didi

matlab - |Ubuntu 18.04, opencv-3.4.0, MATLAB/R2018a| make 因对 cv::dnn::eperimental 的 undefined reference 而失败

转载 作者:太空宇宙 更新时间:2023-11-03 21:50:24 26 4
gpt4 key购买 nike

我已按照维基步骤安装 mexopencv ,但出现以下错误:

$ make MATLABDIR=/usr/local/MATLAB/R2018a WITH_CONTRIB=true all contrib    

/tmp/mex_17713079591682_20541/Net_.o: In function `mexFunction':
Net_.cpp:(.text+0x10dd): undefined reference to `cv::dnn::experimental_dnn_v3::Net::Net()'
Net_.cpp:(.text+0x11ac): undefined reference to `cv::dnn::experimental_dnn_v3::readNetFromCaffe(cv::String const&, cv::String const&)'
Net_.cpp:(.text+0x122a): undefined reference to `cv::dnn::experimental_dnn_v3::Net::~Net()'
.. and so on

如果我看到要在 opencv 中构建什么,模块 dnn 存在,这让我感到奇怪。

-- General configuration for OpenCV 3.4.0 =====================================

-- OpenCV modules:
-- To be built: aruco bgsegm bioinspired calib3d ccalib core datasets dnn dpm face features2d flann freetype fuzzy hdf highgui img_hash imgcodecs imgproc line_descriptor ml objdetect optflow phase_unwrapping photo plot python_bindings_generator reg rgbd saliency shape stereo stitching structured_light superres surface_matching text tracking video videoio videostab xfeatures2d ximgproc xobjdetect xphoto
-- Disabled: js python2 python3 world
-- Disabled by dependency: -
-- Unavailable: cnn_3dobj cudaarithm cudabgsegm cudacodec cudafeatures2d cudafilters cudaimgproc cudalegacy cudaobjdetect cudaoptflow cudastereo cudawarping cudev cvv dnn_modern java matlab ovis sfm ts viz

内置模块:

$ pkg-config --cflags --libs opencv
-I/usr/local/include/opencv ..etc.. -lopencv_dnn .. etc

当前的 opencv 版本是:

$ pkg-config --modversion opencv
3.4.0

问题是;有没有办法通过禁用/取消链接 dnn 来解决/解决此问题?

或者我如何实际编译使该引用正常工作所需的 dnn 文件?

{edit 1} 文件实际编译于:

$ ls /usr/local/include/opencv2/
...
bioinspired dnn fuzzy imgproc optflow saliency superres videoio xphoto.hpp
bioinspired.hpp dnn.hpp fuzzy.hpp imgproc.hpp
...

{edit 2} 通过添加以下内容在 mexopencv Makefile 中取消链接 -lopencv_dnn:

CV_LDFLAGS := $(filter-out -lopencv_dnn,$(CV_LDFLAGS))

不是一个选项,因为对 cv::dnn::experimental_dnn_v3 的 undefined reference 仍然编译失败。所以我想我需要解决这个问题。

最佳答案

找到了我的问题的解决方案。原因是盲目跟风mexopencv对于 Opencv 安装部分。我必须在 cmake 步骤中使用以下内容:

# build and compile opencv-3.4.0:
$ cmake -G "Unix Makefiles" \
-DBUILD_DOCS=OFF \
-DBUILD_EXAMPLES=OFF \
-DBUILD_PERF_TESTS=OFF \
-DBUILD_TESTS=OFF \
-DBUILD_JAVA=OFF \
-DWITH_CUDA=OFF \
-DWITH_CUBLAS:BOOL=OFF \
-DWITH_CUFFT:BOOL=OFF \
-DWITH_NVCUVID:BOOL=OFF \
-DBUILD_opencv_cudaarithm:BOOL=OFF \
-DBUILD_opencv_cudabgsegm:BOOL=OFF \
-DBUILD_opencv_cudacodec:BOOL=OFF \
-DBUILD_opencv_cudafeatures2d:BOOL=OFF \
-DBUILD_opencv_cudafilters:BOOL=OFF \
-DBUILD_opencv_cudaimgproc:BOOL=OFF \
-DBUILD_opencv_cudalegacy:BOOL=OFF \
-DBUILD_opencv_cudaobjdetect:BOOL=OFF \
-DBUILD_opencv_cudaoptflow:BOOL=OFF \
-DBUILD_opencv_cudastereo:BOOL=OFF \
-DBUILD_opencv_cudawarping:BOOL=OFF \
-DBUILD_opencv_cudev:BOOL=OFF \
-DBUILD_opencv_java=OFF \
-DBUILD_opencv_js=OFF \
-DBUILD_opencv_python2=OFF \
-DBUILD_opencv_python3=OFF \
-DBUILD_opencv_ts=OFF \
-DBUILD_opencv_world=OFF \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_INSTALL_PREFIX=/usr/local \
-DOPENCV_ENABLE_NONFREE=ON \
-DOPENCV_EXTRA_MODULES_PATH=~/cv/opencv_contrib-3.4.0/modules ~/cv/opencv-3.4.0
$ make -j8 # -j$(nproc)
$ sudo make install

# compile mexopencv = OK
$ make MATLABDIR=/usr/local/MATLAB/R2018a WITH_CONTRIB=true all contrib

与 wiki 的主要区别在于从 cmake 步骤中删除了以下两行:

-DWITH_MATLAB=OFF \
-DBUILD_opencv_matlab=OFF \

关于matlab - |Ubuntu 18.04, opencv-3.4.0, MATLAB/R2018a| make 因对 cv::dnn::eperimental 的 undefined reference 而失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52181085/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com