Caffe + ROS + OpenCV + Qt creator

来源:互联网 发布:sqlserver时间格式化 编辑:程序博客网 时间:2024/05/08 05:25

最近开始学习caffe的使用,断断续续的终于算是把相关的环境配置的合乎自己的心意了。期间遇到了很多问题,现在来总结一下希望能帮到大家。由于我并没有系统的学习过Cmake这种管理工程的方式,很多的名词来源于自己看各种博客和教程,免不了有很多基本的错误,请大家见谅。

基本介绍

Caffe:一个开源的深度学习的框架,利用它我们可以很方便的设计,训练,使用自己或他人的模型。
ROS:机器人操作系统,在ROS框架下可以同时运行多个节点,并且各个节点之间能够互相通信。
OpenCV:开源的计算机视觉库。
Qt creator:我把它当成一个集成开发环境在使用。
我是需要在ROS框架下编写程序,程序中会调用caffe和opencv这两个库,同时ubuntu下我习惯使用的IDE是qt creator。

实现方法

建立工作空间

ros使用的catkin_make命令本质和cmake命令是相同的,能用catkin_make编译的ros包也能用cmake编译。所以整个组织结构按ros的习惯进行:

  • 建立工作空间
  • 创建相应的功能包

编辑cmakelist.txt:

  1. 添加OpenCV库:
set(OpenCV_DIR /usr/share/OpenCV)find_package(catkin REQUIREDOpenCV)

这里,应该是我在安装OpenCV和ROS的时候把它们关联起来了,这样执行catkin_make的时候ROS是在自己的路径下找的。同样的方法是无法找到caffe相应的头文件,库文件的。
2. 添加caffe

 set(Caffe_DIR /home/gph/Desktop/caffe_cmake/caffe-master) find_package(Caffe)include_directories(${Caffe_INCLUDE_DIRS})

整个cmakelist.txt如下:

cmake_minimum_required(VERSION 2.8.3)project(usecaffe)set(Caffe_DIR /home/gph/Desktop/caffe_cmake/caffe-master)set(OpenCV_DIR /usr/share/OpenCV)find_package(Caffe)include_directories(${Caffe_INCLUDE_DIRS})find_package(catkin REQUIREDOpenCV)catkin_package()include_directories(include     ${catkin_INCLUDE_DIRS}    ${Caffe_INCLUDE_DIRS})set(CPP_SOURCES src/usecaffe.cpp)add_executable(usecaffe ${CPP_SOURCES})target_link_libraries(usecaffe    ${catkin_LIBRARIES}    ${Caffe_LIBRARIES})

注意:添加caffe的语句一定要在添加OpenCV的语句之前。也就是说,find_package(Caffe)要在find_package(catkin REQUIRED)之前,否则虽然能够编译,但是qt打开时仍然显示找不到caffe的头文件。

利用QT打开:

为了使qt能找到ros相关命令,应该再能够使用ros相关命令的终端里打开qt。我的是直接打开终端,输入qtcreator &即可;之后选择open project打开编辑过的CMakelist.txt,选择相应的路径保存qt生成的文件;再run cmake,之后点击finish即可。
图片

可以看到,caffe的头文件,opencv的头文件都找到了,同时也能使用caffe的命名空间caffe是不是很方便呢!

0 0
原创粉丝点击