【问题标题】:Compilation of OpenCV using CMakeList under ROSROS下使用CMakeList编译OpenCV
【发布时间】:2015-12-27 23:23:18
【问题描述】:

我正在尝试使用 CmakeList.txt(在 ROS(机器人操作系统)下)编译 openCV 代码,我的 CmakeList 正在工作,因为在另一台 PC 上它运行良好。我安装了 OpenCV 并在 openCV 示例目录中使用 g++ 和一些标志编译了示例,编译成功。但是当我想使用 CmakeList 编译我的其他代码时,我得到了这个错误:

CMakeFiles/aupark_node.dir/src/wrapper.cpp.o: In function `Wrapper::set_head_image(std::string)':
wrapper.cpp:(.text+0x2ef1): undefined reference to `cv::imread(cv::String const&, int)'

在 wrapper.cpp 我有所有适当的包含。

#include <opencv2/opencv.hpp>
#include <image_transport/image_transport.h>
#include <cv_bridge/cv_bridge.h>
#include <sensor_msgs/image_encodings.h>
#include <opencv2/imgproc/imgproc.hpp>
#include <opencv2/objdetect/objdetect.hpp>
#include <opencv2/highgui/highgui.hpp>

我的 CMakeList.txt 在这里:

cmake_minimum_required(VERSION 2.8.3)
project(aupark)

set(CMAKE_CXX_FLAGS "-std=c++11 ${CMAKE_CXX_FLAGS}")
find_package(catkin REQUIRED COMPONENTS cmake_modules roscpp gencpp moveit_ros_planning_interface moveit_msgs cv_bridge)
find_package(Eigen REQUIRED)
include_directories(${EIGEN_INCLUDE_DIRS})
add_definitions(${EIGEN_DEFINITIONS})

catkin_package()

add_executable(aupark_node src/aupark_node.cpp src/wrapper.cpp src/wrapper.h)
target_link_libraries(aupark_node ${catkin_LIBRARIES})

有什么问题吗?

pkg-config opencv --libs 的输出:

-L/usr/local/lib
-lopencv_shape 
-lopencv_stitching 
-lopencv_objdetect 
-lopencv_superres  
-lopencv_videostab 
-lopencv_calib3d 
-lopencv_features2d  
-lopencv_highgui 
-lopencv_videoio 
-lopencv_imgcodecs 
-lopencv_video 
-lopencv_photo 
-lopencv_ml 
-lopencv_imgproc 
-lopencv_flann 
-lopencv_viz 
-lopencv_core 
-lopencv_hal 

【问题讨论】:

标签: c++ opencv cmake ros


【解决方案1】:

您没有在 CMakeLists.txt 中链接 OpenCV。

为此,请在顶部添加find_package(OpenCV REQUIRED),然后将您的目标链接到它:

target_link_libraries(aupark_node ${catkin_LIBRARIES} ${OpenCV_LIBS})

可以在the OpenCV documentation 中找到有关如何将 OpenCV 与 cmake 一起使用的最小示例。

【讨论】:

  • 非常感谢。它现在正在工作。但有趣的是,在其他 PC 上,我可以使用不包含您建议的行的旧 CMakeList 编译它。
  • @wair92 很高兴我能帮上忙。是的,当我读到你的问题时,我也很想知道。老实说,我不知道另一台 PC 上会有什么不同让它在那里工作。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-05-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-23
  • 1970-01-01
相关资源
最近更新 更多