簡體   English   中英

ROS節點中OpenCV 4和cv_bridge之間的沖突

[英]Conflict between OpenCV 4 and cv_bridge in ROS Node

我正在使用帶有 ROS 的 OpenCV 開始一個項目,我需要使用 opencv_contrib 中的 xfeatures2d。 我按照此說明以這種方式修改我的 CMake 文件:

cmake_minimum_required(VERSION 3.0.2)
project(visual_odometry)

find_package(catkin REQUIRED COMPONENTS
  cv_bridge
  image_transport
  roscpp
  rospy
  sensor_msgs
  nav_msgs
  geometry_msgs
  std_msgs
)

find_package(OpenCV 4 REQUIRED) 

catkin_package()

include_directories(
# include  
  ${catkin_INCLUDE_DIRS}
  ${OpenCV_INCLUDE_DIRS}
)

add_executable(show_image src/show_image.cpp)
target_link_libraries(show_image 
${catkin_LIBRARIES}
${OpenCV_LIBRARIES})

add_executable(show_video src/show_video.cpp)
target_link_libraries(show_video 
${catkin_LIBRARIES}
${OpenCV_LIBRARIES})

add_executable(visual_Odometry src/visual_Odometry.cpp)
target_link_libraries(visual_Odometry 
${catkin_LIBRARIES}
${OpenCV_LIBRARIES})

catkin_make之后:

/usr/bin/ld: warning: libopencv_imgproc.so.4.5, needed by /usr/local/lib/libopencv_xfeatures2d.so.4.5.3, may conflict with libopencv_imgproc.so.3.2

在運行期間,imgproc 的某些功能(如 CLAHE 算法)不起作用,我的節點停止工作。

當我使用 catkin_make 構建時,cv_bridge 在 ros 中找到 opencv3.2 默認值,但由於 CMake 文件,我的節點找到了 opencv4。 那么,我可以解決這個問題嗎? 可以在 opencv3.2 中構建一個 opencv_contrib 嗎? cv_bridge中opencv的版本可以改嗎?

我在Github找到了一個解決方案:

在 catkin_ws/src 中:

git clone https://github.com/fizyr-forks/vision_opencv/tree/opencv4
cd vision_opencv
git checkout opencv4

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM