在 Ubuntu 18.04 Jetson 中为 cv_bridge 链接 opencv 3.2
Posted
技术标签:
【中文标题】在 Ubuntu 18.04 Jetson 中为 cv_bridge 链接 opencv 3.2【英文标题】:Linking opencv 3.2 for cv_bridge in Ubuntu 18.04 Jetson 【发布时间】:2021-09-07 12:41:32 【问题描述】:我需要使用 cv_bridge 并将图像传输到 vison wx。我正在使用makefile来链接/编译。我遇到的问题是我不知道 opencv 3.2 库的头文件在哪里。这是在 Jetson Xavier 上,可能 SDK 管理器已经安装了 opencv 3.2,或者我可能稍后安装了它。无论如何,我现在使用命令重新安装它
sudo apt-get install --reinstall libopencv-core3.2
为了识别编译器和链接器标志,我运行了两个 pkg-config 命令
pkg-config --cflags cv_bridge
-I/opt/ros/melodic/include -I/usr/include/opencv -I/opt/ros/melodic/include
pkg-config --libs cv_bridge
-L/opt/ros/melodic/lib -lcv_bridge /usr/lib/aarch64-linux-gnu/libopencv_core.so.3.2.0 /usr/lib/aarch64-linux-gnu/libopencv_imgproc.so.3.2.0 /usr/lib/aarch64-linux-gnu/libopencv_imgcodecs.so.3.2.0 -lrosconsole -lrosconsole_log4cxx -lrosconsole_backend_interface /usr/lib/aarch64-linux-gnu/liblog4cxx.so /usr/lib/aarch64-linux-gnu/libboost_regex.so /usr/lib/aarch64-linux-gnu/libboost_system.so /usr/lib/aarch64-linux-gnu/libboost_thread.so /usr/lib/aarch64-linux-gnu/libboost_chrono.so /usr/lib/aarch64-linux-gnu/libboost_date_time.so /usr/lib/aarch64-linux-gnu/libboost_atomic.so /usr/lib/aarch64-linux-gnu/libpthread.so -lroscpp_serialization -lrostime /usr/lib/aarch64-linux-gnu/libboost_date_time.so /usr/lib/aarch64-linux-gnu/libboost_system.so /usr/lib/aarch64-linux-gnu/libboost_thread.so /usr/lib/aarch64-linux-gnu/libboost_chrono.so /usr/lib/aarch64-linux-gnu/libboost_atomic.so /usr/lib/aarch64-linux-gnu/libpthread.so -lcpp_common /usr/lib/aarch64-linux-gnu/libboost_system.so /usr/lib/aarch64-linux-gnu/libboost_thread.so /usr/lib/aarch64-linux-gnu/libboost_chrono.so /usr/lib/aarch64-linux-gnu/libboost_date_time.so /usr/lib/aarch64-linux-gnu/libboost_atomic.so /usr/lib/aarch64-linux-gnu/libpthread.so /usr/lib/aarch64-linux-gnu/libconsole_bridge.so.0.4
从上面的输出来看,有一个opencv核心库在
ls /usr/lib/aarch64-linux-gnu/libopencv_core.so.3.2.0
/usr/lib/aarch64-linux-gnu/libopencv_core.so.3.2.0
问题是我找不到 opencv 3.2 的头文件。从上面的输出来看,头文件应该在目录中
-I/usr/include/opencv
在/usr/include/opencv目录下,有一个子目录
/usr/include/opencv4/opencv2_orig/core/version.hpp
其中包含 version.hpp 文件,其中包含显示版本为 4.1.1 的这些行。
file: /usr/include/opencv4/opencv2_orig/core/version.hpp
#define CV_VERSION_MAJOR 4
#define CV_VERSION_MINOR 1
#define CV_VERSION_REVISION 1
那么,我如何安装与 cv_bridge 一起使用的 opencv 3.2 版头文件?另外,这个问题可能有一个 ROS 包解决方案,这可能更合适,因为 cv_bridge 库位于 /opt/ros/melodic/lib 中。
嗯,我看到 cv-bridge 没有标签。我认为这意味着我在错误的博客中。有什么建议我应该在哪里发布这个问题?
【问题讨论】:
P.S.这里可能有一个简单的解决方案,只需下载opencv 3.2源并将头文件复制到/usr/include/opencv3,并更正链接信息。 【参考方案1】:Opencv 3.2可以使用下面的命令安装,头文件放在/usr/include/opencv2。我相信发生的事情是安装了opencv4,当时opencv 3.2的头文件被删除了。
sudo apt install libopencv-dev=3.2.0+dfsg-4ubuntu0.1
这里是链接 cpp 代码 step_2 与 rosbag、cv_bridge 和 opencv (3.2) 的示例。 include -I/opt/ros/melodic/include 不是必需的,它是由 rosbag pkg-config 命令生成的,但为了清楚起见,包括在内,以识别 cv_bridge 标头的位置。
g++ step_2.cpp -o step_2 `pkg-config --cflags --libs rosbag` \
-I/opt/ros/melodic/include \
-L/usr/lib/aarch64-linux-gnu/ -lopencv_core -lopencv_highgui \
-L/opt/ros/melodic/lib -lcv_bridge
参考ros perception
【讨论】:
以上是关于在 Ubuntu 18.04 Jetson 中为 cv_bridge 链接 opencv 3.2的主要内容,如果未能解决你的问题,请参考以下文章
jetson nano(ubuntu18.04)设置开机自启动python文件
How to config Bluetooth base Ubuntu 18.04 for Nvidia NANO 2G