opencv - 创建 ROS 工作空间时,没有规则创建目标 libopencv_calib3d.so.3.2.0,但安装了 opencv 3.4.1

标签 opencv ros catkin

我在我的 ubuntu 上从源代码安装了 opencv 3.4.1。但是当运行命令 catkin_make -DCMAKE_BUILD_TYPE=Release 时出现错误:

没有规则可以创建“~/ros_ws/devel/lib/stereo_slam/image_handle_node”所需的目标“/usr/lib/x86_64-linux-gnu/libopencv_calib3d.so.3.2.0”。停止。 没有规则可以创建“~/ros_ws/devel/lib/libmetrics_lib.so”所需的目标“/usr/lib/x86_64-linux-gnu/libopencv_calib3d.so.3.2.0”。停止。

我已经尝试过以下操作:openCV program compile error "libopencv_core.so.2.4: cannot open shared object file: No such file or directory" in ubuntu 12.04

[编辑] 我直接从终端使用 clion 或 catkin_make 编译时遇到相同的错误,但 clion 为发布和调试版本创建了特殊的包。我不太理解这些包,但在文件 CMakeCache.txt 中我发现了以下几行:

//Dependencies for the target
metrics_lib_LIB_DEPENDS:STATIC=general;/opt/ros/melodic/lib/libtf.so;general;/opt/ros/melodic/lib/libtf2_ros.so;general;/opt/ros/melodic/lib/libactionlib.so;general;/opt/ros/melodic/lib/libmessage_filters.so;general;/opt/ros/melodic/lib/libtf2.so;general;/opt/ros/melodic/lib/libcv_bridge.so;general;/opt/ros/melodic/lib/libimage_geometry.so;general;/usr/lib/x86_64-linux-gnu/libopencv_calib3d.so.3.2.0;general;/usr/lib/x86_64-linux-gnu/libopencv_core.so.3.2.0;general;/usr/lib/x86_64-linux-gnu/libopencv_features2d.so.3.2.0;general;/usr/lib/x86_64-linux-gnu/libopencv_flann.so.3.2.0;general;/usr/lib/x86_64-linux-gnu/libopencv_highgui.so.3.2.0;general;/usr/lib/x86_64-linux-gnu/libopencv_imgcodecs.so.3.2.0;general;/usr/lib/x86_64-linux-gnu/libopencv_imgproc.so.3.2.0;general;/usr/lib/x86_64-linux-gnu/libopencv_ml.so.3.2.0;general;/usr/lib/x86_64-linux-gnu/libopencv_objdetect.so.3.2.0;general;/usr/lib/x86_64-linux-gnu/libopencv_photo.so.3.2.0;general;/usr/lib/x86_64-linux-gnu/libopencv_shape.so.3.2.0;general;/usr/lib/x86_64-linux-gnu/libopencv_stitching.so.3.2.0;general;/usr/lib/x86_64-linux-gnu/libopencv_superres.so.3.2.0;general;/usr/lib/x86_64-linux-gnu/libopencv_video.so.3.2.0;general;/usr/lib/x86_64-linux-gnu/libopencv_videoio.so.3.2.0;general;/usr/lib/x86_64-linux-gnu/libopencv_videostab.so.3.2.0;general;/usr/lib/x86_64-linux-gnu/libopencv_viz.so.3.2.0;general;/usr/lib/x86_64-linux-gnu/libopencv_aruco.so.3.2.0;general;/usr/lib/x86_64-linux-gnu/libopencv_bgsegm.so.3.2.0;general;/usr/lib/x86_64-linux-gnu/libopencv_bioinspired.so.3.2.0;general;/usr/lib/x86_64-linux-gnu/libopencv_ccalib.so.3.2.0;general;/usr/lib/x86_64-linux-gnu/libopencv_datasets.so.3.2.0;general;/usr/lib/x86_64-linux-gnu/libopencv_dpm.so.3.2.0;general;/usr/lib/x86_64-linux-gnu/libopencv_face.so.3.2.0;general;/usr/lib/x86_64-linux-gnu/libopencv_freetype.so.3.2.0;general;/usr/lib/x86_64-linux-gnu/libopencv_fuzzy.so.3.2.0;general;/usr/lib/x86_64-linux-gnu/libopencv_hdf.so.3.2.0;general;/usr/lib/x86_64-linux-gnu/libopencv_line_descriptor.so.3.2.0;general;/usr/lib/x86_64-linux-gnu/libopencv_optflow.so.3.2.0;general;/usr/lib/x86_64-linux-gnu/libopencv_phase_unwrapping.so.3.2.0;general;/usr/lib/x86_64-linux-gnu/libopencv_plot.so.3.2.0;general;/usr/lib/x86_64-linux-gnu/libopencv_reg.so.3.2.0;general;/usr/lib/x86_64-linux-gnu/libopencv_rgbd.so.3.2.0;general;/usr/lib/x86_64-linux-gnu/libopencv_saliency.so.3.2.0;general;/usr/lib/x86_64-linux-gnu/libopencv_stereo.so.3.2.0;general;/usr/lib/x86_64-linux-gnu/libopencv_structured_light.so.3.2.0;general;/usr/lib/x86_64-linux-gnu/libopencv_surface_matching.so.3.2.0;general;/usr/lib/x86_64-linux-gnu/libopencv_text.so.3.2.0;general;/usr/lib/x86_64-linux-gnu/libopencv_ximgproc.so.3.2.0;general;/usr/lib/x86_64-linux-gnu/libopencv_xobjdetect.so.3.2.0;general;/usr/lib/x86_64-linux-gnu/libopencv_xphoto.so.3.2.0;general;/opt/ros/melodic/lib/libroscpp.so;general;/usr/lib/x86_64-linux-gnu/libboost_filesystem.so;general;/usr/lib/x86_64-linux-gnu/libboost_signals.so;general;/opt/ros/melodic/lib/librosconsole.so;general;/opt/ros/melodic/lib/librosconsole_log4cxx.so;general;/opt/ros/melodic/lib/librosconsole_backend_interface.so;general;/usr/lib/x86_64-linux-gnu/liblog4cxx.so;general;/usr/lib/x86_64-linux-gnu/libboost_regex.so;general;/opt/ros/melodic/lib/libxmlrpcpp.so;general;/opt/ros/melodic/lib/libroscpp_serialization.so;general;/opt/ros/melodic/lib/librostime.so;general;/opt/ros/melodic/lib/libcpp_common.so;general;/usr/lib/x86_64-linux-gnu/libboost_system.so;general;/usr/lib/x86_64-linux-gnu/libboost_thread.so;general;/usr/lib/x86_64-linux-gnu/libboost_chrono.so;general;/usr/lib/x86_64-linux-gnu/libboost_date_time.so;general;/usr/lib/x86_64-linux-gnu/libboost_atomic.so;general;/usr/lib/x86_64-linux-gnu/libpthread.so;general;/usr/lib/x86_64-linux-gnu/libconsole_bridge.so.0.4;general;prometheus-cpp::core;general;prometheus-cpp::pull;general;ceres;general;proto;

我不明白这些metrics_lib_LIB_DEPENDS是什么,以及它们来自哪里。

最佳答案

我还错误地使用了 sudo find/-name "opencv"-exec rm -i {}\; 来删除 opencv,我也遇到了同样的问题。 我解决了:

sudo apt remove libopencv-dev   
sudo apt remove libopencv-core3.2

但是,并不是所有的 opencv 库都会因此被卸载,因此您需要删除所有随 ros 安装的 opencv 库(在我的例子中,我还需要删除 opencv-data)。您可以通过以下方式找到它们:

sudo apt list --installed | grep opencv  

之后你可以再次安装ros melodic(或者你正在使用的任何东西):

sudo apt install ros-melodic-desktop-full

关于opencv - 创建 ROS 工作空间时,没有规则创建目标 libopencv_calib3d.so.3.2.0,但安装了 opencv 3.4.1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58484540/

相关文章:

c++ - DJI SDK 无法启动协同 Waypoint 任务

c++ - 使用 OpenCV 2.4.9 构建 ROS 包时出现问题

cmake - 在 ROS 中使用 ZeroMQ 与包 zeromq_catkin - 如何包含?

c++ - OpenCV 错误 : Assertion failed, mat.cpp 第 537 行

java - 在 javacv 中将 IplImage 转换为 Mat

opencv - 同一相机的固有参数相同?

c - 在 Opencv 中使用 IPL_DEPTH_32f

c++ - 创建并编译一个基类以在其他 C++ 项目 (ROS) 中使用

android - Android 上的简单标记检测(不是传统的增强现实),可能使用 OpenCV

linux - 命令行无法在 Ubuntu 14.04 中为 ROS 创建柳絮工作区