最近准备看看OpenCV,过程遇到很多问题,所以想把这些过程记录下来。
ps:纯小白,欢迎指出错误~
目录
一、条件
- ubuntu20.04和win10双系统
- ROS2 Galactic版本
- OpenCV使用ROS2自带版本OpenCV4.2.0
二、摸索阶段
一开始我不知道自带的OpenCV是什么版本的,在网上找了很久都没找到和我条件基本一样的文章,只能先随便逛逛了。
经过长时间的“冲浪”,首先要知道版本,先打开usr下的include文件夹找找opencv相关文件夹:
确定了是版本4,然后用下面这条代码:
pkg-config --modversion opencv4
结果:
(其实好像不知道版本也没多大的影响?)
接着,我想先创建个工作空间,输入基本语句看看吧!
先新建ws_opencv文件夹,再:
cd ws_opencv
mkdir src
再进入到src目录下,用ros2的方法创建:功能包为test00,节点名为test00(后来发现其实没必要哈哈哈,普通的新建文件夹就行了,原谅当时愚蠢的我)
ros2 pkg create test00 --build-type ament_cmake --dependencies rclcpp --node-name test00
这里要注意的是,文件名最好不要为“test”,这样的话后面编译啥的会报错说和关键字冲突,别问为什么我知道 (泪目)
这时候我用vscode打开,在src目录下新建文件“test00.cpp”,输入以下内容:
#include <stdio.h>
#include <opencv4/opencv2/opencv.hpp>
int main(){
printf("Hello OpenCV\n");
return 0;
}
注意:opencv.hpp头文件的路径不一定和我的相同,如果报错的话就自己去找找这个文件
这时候,可能还会报错就是说,没有包含头文件的路径,点击快速修复,添加路径:
/usr/include/opencv4
注意:要去找自己的opencv4所在的路径!然后就可以开始测试啦!
三、步入正轨
上面已经说了在cpp文件要输入的内容,;接下来就是CMakeLists.txt的配置了
内容如下:
find_package(OpenCV REQUIRED)#注意大小写
include_directories(${OpenCV_INCLUDE_DIRS})
add_executable(test00 src/test00.cpp)#这个是自动生成的
target_link_libraries(test00 ${OpenCV_LIBS})
接下来可以做编译这些了,(我使用的是cmake编译)我们在工作空间下,打开集成终端,输入:
cmake .
成功的结果:
接下来:
make
成功的结果:
最后:
./test00
大功告成!