编译OpenCV并支持VTK以进行开放检测

mspsb9vt  于 2023-01-26  发布在  其他
关注(0)|答案(1)|浏览(259)

我尝试在Ubuntu 16.04上安装OpenDetection。我已经根据here安装了除OpenCV之外的所有依赖项。这是我用于OpenCV的CMake命令:
cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D WITH_TBB=ON -D BUILD_NEW_PYTHON_SUPPORT=ON -D WITH_V4L=ON -D WITH_VTK=ON -D INSTALL_C_EXAMPLES=ON -D INSTALL_PYTHON_EXAMPLES=ON -D BUILD_EXAMPLES=ON -D ENABLE_FAST_MATH=1 -D CUDA_FAST_MATH=1 -D WITH_CUBLAS=1 -DOPENCV_EXTRA_MODULES_PATH=/home/tiestu/Documents/GitRepository/OpenCV3/opencv_contrib/modules /home/tiestu/Documents/GitRepository/OpenCV3/opencv
但是当我尝试make OpenCV时,我收到了this error,我相信这与VTK有关!
我已经配置了VTK使用最新的预建二进制版本的cmake与默认设置,根据安装说明。但这个错误说:

vtkGenericDataArrayLookupHelper.h:72:23: error: ‘nullptr’ was not declared in this scope

构建输出的完整错误/警告部分为:

In file included from /usr/local/include/vtk-7.1/vtkGenericDataArray.h:72:0,
                 from /usr/local/include/vtk-7.1/vtkAOSDataArrayTemplate.h:35,
                 from /usr/local/include/vtk-7.1/vtkIntArray.h:33,
                 from /usr/local/include/vtk-7.1/vtkCellTypes.h:42,
                 from /usr/local/include/vtk-7.1/vtkPolyData.h:64,
                 from /usr/local/include/vtk-7.1/vtkPolyDataAlgorithm.h:36,
                 from /usr/local/include/vtk-7.1/vtkAppendPolyData.h:35,
                 from /home/tiestu/Documents/GitRepository/OpenCV3/opencv/modules/viz/src/precomp.hpp:56,
                 from /home/tiestu/Documents/GitRepository/OpenCV3/opencv/release/modules/viz/opencv_viz_pch_dephelp.cxx:1:
/usr/local/include/vtk-7.1/vtkGenericDataArrayLookupHelper.h:72:5: warning: identifier ‘nullptr’ is a keyword in C++11 [-Wc++0x-compat]
     : AssociatedArray{nullptr}, SortedArray(nullptr),
     ^
/usr/local/include/vtk-7.1/vtkGenericDataArrayLookupHelper.h: In constructor ‘vtkGenericDataArrayLookupHelper<ArrayTypeT>::vtkGenericDataArrayLookupHelper()’:
/usr/local/include/vtk-7.1/vtkGenericDataArrayLookupHelper.h:72:22: warning: extended initializer lists only available with -std=c++11 or -std=gnu++11
     : AssociatedArray{nullptr}, SortedArray(nullptr),
                      ^
/usr/local/include/vtk-7.1/vtkGenericDataArrayLookupHelper.h:72:23: error: ‘nullptr’ was not declared in this scope
     : AssociatedArray{nullptr}, SortedArray(nullptr),
                       ^
/usr/local/include/vtk-7.1/vtkGenericDataArrayLookupHelper.h:73:15: warning: extended initializer lists only available with -std=c++11 or -std=gnu++11
     FirstValue{nullptr}, SortedArraySize{0}
               ^
/usr/local/include/vtk-7.1/vtkGenericDataArrayLookupHelper.h:73:41: warning: extended initializer lists only available with -std=c++11 or -std=gnu++11
     FirstValue{nullptr}, SortedArraySize{0}
                                         ^
modules/viz/CMakeFiles/opencv_viz_pch_dephelp.dir/build.make:62: recipe for target 'modules/viz/CMakeFiles/opencv_viz_pch_dephelp.dir/opencv_viz_pch_dephelp.cxx.o' failed
make[2]: *** [modules/viz/CMakeFiles/opencv_viz_pch_dephelp.dir/opencv_viz_pch_dephelp.cxx.o] Error 1
CMakeFiles/Makefile2:6005: recipe for target 'modules/viz/CMakeFiles/opencv_viz_pch_dephelp.dir/all' failed
make[1]: *** [modules/viz/CMakeFiles/opencv_viz_pch_dephelp.dir/all] Error 2
Makefile:160: recipe for target 'all' failed
make: *** [all] Error 2

我使用的编译器版本(11或0x)有关系吗?如果有,我应该使用哪个版本?

jutyujz0

jutyujz01#

您需要使用一个编译器,它支持您正在使用的OpenCV版本,以及它使用的 C++ 版本,从您的错误和警告诊断消息来看,它至少是C11。
你可以阅读编译器版本的文档,看看它支持哪些 C
版本,还有a support information table on cppreference.com
有趣的是,你会得到这样的错误和警告。库应该能够在它的CMake配置中告诉CMake它在源文件中使用的是什么 C++ 版本,并且CMake会跟踪这个要求,以确保在需要的地方使用正确的编译器标志。

相关问题