在Ubuntu 18.04 Jetson中为cv_bridge链接opencv 3.2



我需要使用cv_bridge并将图像传输到vison wx。我正在使用makefile进行链接/编译。我遇到的问题是我不知道opencv 3.2库的头文件在哪里。这是在Jetson Xavier上,opencv 3.2可能已经由SDK Manager安装,或者我可能稍后安装了它。不管怎样,我只是用命令重新安装了它

sudo apt-get install --reinstall libopencv-core3.2

为了识别编译器和链接器标志,我运行了两个pkg配置命令

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

那么,我如何安装opencv 3.2版的头文件呢?此外,可能有一个ROS包解决方案来解决这个问题,这可能更合适,因为cv_bridge库位于/opt/ROS/modyc/lib中。

嗯,我看到简历桥没有标签。我想这意味着我上错了博客。有什么建议我应该把这个问题发在哪里吗?

Opencv 3.2可以使用下面的命令安装,头文件位于/usr/include/opencv2中。我相信发生的事情是安装了opencv4,当时opencv3.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/modyc/include不是必需的,它是由rosbag pkg config命令生成的,但为了清晰起见,它被包括在内,以识别cv_bridgeheader的位置。

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

ref-ros感知

最新更新