CVBridge 与高版本OPENCV冲突解决

CVBridge 与高版本OPENCV冲突解决,第1张

CVBridge 与高版本OPENCV冲突解决
  • 一级目录
    • 二级目录
      • 三级目录
    • 下载cvbridge
      • 编译
      • 编译问题
    • 使用

一级目录 二级目录 三级目录 下载cvbridge
mkdir -p cv_bridge_ws/src
cd cv_bridge_ws/src
git clone https://gitee.com/bingobinlw/cv_bridge  //此链接适用于18.04
cd ..
编译
  • 然后将自己安装的opencv编译生成的build文件路径加入到克隆下来的这个包里的CMakeLists.txt,修改添加下列语句(详见此文件目录下的CMakeLists.txt文件)
set(OpenCV_DIR "your-path/opencv-x.x.x/build")
catkin_make
编译问题

https://github.com/ros-perception/vision_opencv/issues/272

高赞回答

  1. Add set (CMAKE_CXX_STANDARD 11) to your top level cmake

  2. In cv_bridge/src CMakeLists.txt line 35 change to if (OpenCV_VERSION_MAJOR VERSION_EQUAL 4)

  3. In cv_bridge/src/module_opencv3.cpp change signature of two functions

    💡 `UMatData* allocate(int dims0, const int* sizes, int type, void* data, size_t* step, int flags, UMatUsageFlags usageFlags) const`

    TO

    💡 `UMatData* allocate(int dims0, const int* sizes, int type, void* data, size_t* step, AccessFlag flags, UMatUsageFlags usageFlags) const`
💡 `bool allocate(UMatData* u, int accessFlags, UMatUsageFlags usageFlags) const`

TO

💡 `bool allocate(UMatData* u, AccessFlag accessFlags, UMatUsageFlags usageFlags) const`
  • 然后以可以重新编译
使用

最后在所需要使用cv_bridge的ros包里的CMakeLists.txt文件中添加opencv路径以及cv_bridge路径

set(OpenCV_DIR "your-path/opencv-x.x.x/build")
set(cv_bridge_DIR your-path/cv_bridge_ws/devel/share/cv_bridge/cmake)

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/798914.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-06
下一篇2022-05-06

发表评论

登录后才能评论

评论列表(0条)

    保存