1.OPENCV3.2.0安装包离线包
protobuf-cpp-3.1.0 离线包,无需解压(折腾2天找到的解决方案)
借助CMAKE GUI
以上折腾都没办法,最终配置完成解决方案 cmake_gui方法
https://blog.youkuaiyun.com/jindunwan7388/article/details/80397700
所有下载文件上传网盘。
地址如下:
opencv-contrib3.2 cmake编译时缺少的一些文件 包含 vgg_generated boostdesc_binboost_128.i 等
http://www.pudn.com/Download/item/id/3202079.html
cuda 与opencv 兼容性问题
CMake Error: The following variables are used in this project, but they are set to NOTFOUND.
Please set them or make sure they are set and tested correctly in the CMake files:
CUDA_nppi_LIBRARY (ADVANCED)
http://osask.cn/front/ask/view/352274
2.
Build output check failed:
Regex: 'command line option .* is valid for .* but not for C\+\+'
Output line: 'cc1plus: warning: command line option ‘-Wmissing-prototypes’ is valid for C/ObjC but not for C++'
Compilation failed:
source file: '/home/jhros/opencv-3.3.0/build/CMakeFiles/CMakeTmp/src.cxx'
check option: ' -fsigned-char -W -Wall -Werror=return-type -Werror=non-virtual-dtor -Werror=address -Werror=sequence-point -Wformat -Werror=format-security -Wmissing-declarations -Wmissing-prototypes
如果有如下问题,请在编译选项添加
CMAKE_C_COMPILER=/usr/bin/gcc-5
即可解决问题
解决 C++11编译问题 在编译项增加
-D CUDA_HOST_COMPILER=/usr/bin/g++-5 \
-D CUDA_PROPAGATE_HOST_FLAGS=oFF \
-D CMAKE_CXX_FLAGS="-std=c++11" \
https://github.com/BVLC/caffe/issues/6358
其他编译报错 这个比较全面
https://blog.youkuaiyun.com/weixin_38354109/article/details/78795861?utm_source=blogxgwz3
3.OPENCV最终编译指令
cmake -D CMAKE_BUILD_TYPE=RELEASE \
-D CMAKE_INSTALL_PREFIX=/usr/local \
-D INSTALL_PYTHON_EXAMPLES=ON \
-D INSTALL_C_EXAMPLES=OFF \
-D OPENCV_EXTRA_MODULES_PATH=/home/peter/catkin_ws/src/opencv-3.2.0/opencv_contrib/modules \
-D PYTHON_EXCUTABLE=/usr/bin/python2.7 \
-D WITH_CUDA=ON \
-D WITH_CUBLAS=ON \
-D DCUDA_NVCC_FLAGS="-D_FORCE_INLINES" \
-D CUDA_ARCH_BIN="6.1" \
-D CUDA_ARCH_PTX="" \
-D CUDA_FAST_MATH=ON \
-D WITH_TBB=ON \
-D WITH_V4L=ON \
-D WITH_GTK=ON \
-D WITH_OPENGL=ON \
-D CMAKE_C_COMPILER=/usr/bin/gcc-5 \
-D CUDA_HOST_COMPILER=/usr/bin/g++-5 \
-D CUDA_PROPAGATE_HOST_FLAGS=oFF \
-D CMAKE_CXX_FLAGS="-std=c++11" \
-D BUILD_TIFF=ON \
-D BUILD_EXAMPLES=ON ..
4.OPENCV 环境变量配置
https://www.linuxidc.com/Linux/2012-08/68701.htm
https://blog.youkuaiyun.com/zong596568821xp/article/details/80393810
5. ROS依赖库opencv修改
报错提示
/opt/ros/kinetic/lib/x86_64-linux-gnu/libopencv_imgcodecs3.so.3.3.1:对‘TIFFReadDirectory@LIBTIFF_4.0’未定义的引用
/opt/ros/kinetic/lib/x86_64-linux-gnu/libopencv_imgcodecs3.so.3.3.1:对‘TIFFWriteEncodedStrip@LIBTIFF_4.0’未定义的引用
/opt/ros/kinetic/lib/x86_64-linux-gnu/libopencv_imgcodecs3.so.3.3.1:对‘TIFFIsTiled@LIBTIFF_4.0’未定义的引用
/opt/ros/kinetic/lib/x86_64-linux-gnu/libopencv_imgcodecs3.so.3.3.1:对‘TIFFScanlineSize@LIBTIFF_4.0’未定义的引用
/opt/ros/kinetic/lib/x86_64-linux-gnu/libopencv_imgcodecs3.so.3.3.1:对‘TIFFRGBAImageOK@LIBTIFF_4.0’未定义的引用
/opt/ros/kinetic/lib/x86_64-linux-gnu/libopencv_imgcodecs3.so.3.3.1:对‘TIFFClose@LIBTIFF_4.0’未定义的引用
/opt/ros/kinetic/lib/x86_64-linux-gnu/libopencv_imgcodecs3.so.3.3.1:对‘TIFFSetWarningHandler@LIBTIFF_4.0’未定义的引用
/opt/ros/kinetic/lib/x86_64-linux-gnu/libopencv_imgcodecs3.so.3.3.1:对‘TIFFWriteScanline@LIBTIFF_4.0’未定义的引用
/opt/ros/kinetic/lib/x86_64-linux-gnu/libopencv_imgcodecs3.so.3.3.1:对‘TIFFGetField@LIBTIFF_4.0’未定义的引用
/opt/ros/kinetic/lib/x86_64-linux-gnu/libopencv_imgcodecs3.so.3.3.1:对‘TIFFNumberOfStrips@LIBTIFF_4.0’未定义的引用
/opt/ros/kinetic/lib/x86_64-linux-gnu/libopencv_imgcodecs3.so.3.3.1:对‘TIFFReadEncodedTile@LIBTIFF_4.0’未定义的引用
/opt/ros/kinetic/lib/x86_64-linux-gnu/libopencv_imgcodecs3.so.3.3.1:对‘TIFFReadRGBATile@LIBTIFF_4.0’未定义的引用
/opt/ros/kinetic/lib/x86_64-linux-gnu/libopencv_imgcodecs3.so.3.3.1:对‘TIFFClientOpen@LIBTIFF_4.0’未定义的引用
/opt/ros/kinetic/lib/x86_64-linux-gnu/libopencv_imgcodecs3.so.3.3.1:对‘TIFFOpen@LIBTIFF_4.0’未定义的引用
/opt/ros/kinetic/lib/x86_64-linux-gnu/libopencv_imgcodecs3.so.3.3.1:对‘TIFFReadEncodedStrip@LIBTIFF_4.0’未定义的引用
/opt/ros/kinetic/lib/x86_64-linux-gnu/libopencv_imgcodecs3.so.3.3.1:对‘TIFFSetField@LIBTIFF_4.0’未定义的引用
/opt/ros/kinetic/lib/x86_64-linux-gnu/libopencv_imgcodecs3.so.3.3.1:对‘TIFFSetErrorHandler@LIBTIFF_4.0’未定义的引用
/opt/ros/kinetic/lib/x86_64-linux-gnu/libopencv_imgcodecs3.so.3.3.1:对‘TIFFReadRGBAStrip@LIBTIFF_4.0’未定义的引用
ros当中也会有openCV的部分库,并且当包含cv_bridge用来转换摄像机的数据时,自己会调用ros当中的库。所以就出现了之前的问题。修改的关键是修改一些cmake文件,设置openCV的调用位置。有建议修改 /opt/ros/kinetic/share/cv_bridge/cmake/cv_bridge-extras.cmake,
set(OpenCV_CONFIG_PATH /home/peter/catkin_ws/src/opencv-3.2.0/build)
set(OpenCV_INSTALL_PATH /home/peter/catkin_ws/src/opencv-3.2.0)
#set(OpenCV_CONFIG_PATH /opt/ros/kinetic/share/OpenCV-3.3.1-dev)
#set(OpenCV_INSTALL_PATH /opt/ros/kinetic)
但是没用。
https://blog.youkuaiyun.com/weixin_41120855/article/details/81783081
https://blog.youkuaiyun.com/bigdog_1027/article/details/79092263
606

被折叠的 条评论
为什么被折叠?



