ViSP学习笔记(三):新建Visp工程并使用CMake完成编译

开发环境:Unbuntu 18.04 LTS + ROS Melodic + ViSP 3.3.1
文章内容主要参考ViSP官方教学文档:https://visp-doc.inria.fr/doxygen/visp-daily/tutorial_mainpage.html

  在上一篇文章ViSP学习笔记(二):使用CMake编译ViSP工程中我们介绍了如何使用CMake编译一个现成的Visp例程,而在这篇文章中我们就介绍如何从无到有新建一个Visp工程并完成编译过程。

1. 创建工程

  • 新建文件夹
cd $VISP_WS
mkdir started
  • 进入文件夹,新建工程文件
cd started
touch tutorial-viewer.cpp
  • 打开工程文件
gedit tutorial-viewer.cpp
  • 将代码复制进去并保存关闭,本文仍然使用tutorial-viewer这个例程的代码为例,代码内容不再介绍,可以参看上篇博客
#include <visp3/gui/vpDisplayD3D.h>
#include <visp3/gui/vpDisplayGDI.h>
#include <visp3/gui/vpDisplayGTK.h>
#include <visp3/gui/vpDisplayOpenCV.h>
#include <visp3/gui/vpDisplayX.h>
#include <visp3/io/vpImageIo.h>
int main(int argc, char **argv)
{
  if (argc != 2) {
    printf("Usage: %s <image name.[pgm,ppm,jpeg,png,tiff,bmp,ras,jp2]>\n", argv[0]);
    return -1;
  }
  vpImage<vpRGBa> I;
  try {
    vpImageIo::read(I, argv[1]);
  } catch (...) {
    std::cout << "Cannot read image \"" << argv[1] << "\"" << std::endl;
    return -1;
  }
  try {
#if defined(VISP_HAVE_X11)
    vpDisplayX d(I, vpDisplay::SCALE_AUTO);
#elif defined(VISP_HAVE_GDI)
    vpDisplayGDI d(I, vpDisplay::SCALE_AUTO);
#elif defined(VISP_HAVE_OPENCV)
    vpDisplayOpenCV d(I, vpDisplay::SCALE_AUTO);
#elif defined(VISP_HAVE_GTK)
    vpDisplayGTK d(I, vpDisplay::SCALE_AUTO);
#elif defined(VISP_HAVE_D3D9)
    vpDisplayD3D d(I, vpDisplay::SCALE_AUTO);
#else
    std::cout << "No image viewer is available..." << std::endl;
#endif
    vpDisplay::setTitle(I, "My image");
    vpDisplay::display(I);
    vpDisplay::flush(I);
    std::cout << "A click to quit..." << std::endl;
    vpDisplay::getClick(I);
  } catch (const vpException &e) {
    std::cout << "Catch an exception: " << e << std::endl;
  }
}

2. 获取CMakeLists.txt文件
  在对C++代码进行编译时,需要对应的脚本文件Makefile。但直接编写Makefile过于复杂,所以利用CMake工具自动生成对应的Makefile文件,CMake语法也非常简单,且只需要编写一个CMakeLists.txt文件即可(注意大小写和字母不要写错)

  • 新建CMakeLists.txt文件
touch CMakeLists.txt
  • 打开CMakeLists.txt文件
gedit CMakeLists.txt
  • 将下列代码复制进去并保存关闭
project(tutorial-image) // 定义工程的名字
cmake_minimum_required(VERSION 2.8) //确定Cmake的最低版本
find_package(VISP REQUIRED) //查找指定的包文件 VISPConfig.cmake其中定义了两个变量VISP_INCLUDE_DIRS和VISP_LIBRARIES
include_directories(${VISP_INCLUDE_DIRS}) //设置包含的目录
add_executable(tutorial-viewer tutorial-viewer.cpp) //生成可执行文件
target_link_libraries(tutorial-viewer ${VISP_LIBRARIES}) // 设置 target 需要链接的库

上面的中文注释只是为了帮助大家理解文件内容,在复制时需要将中文注释部分以及//符号都删除掉,否则会导致编译报错

3. 获取monkey.ppm文件
  因为我们这个例程是要打开并显示一幅图片,因此我们需要提前准备好图片文件,我们可以通过以下指令从github上获取该图片

svn export https://github.com/lagadic/visp.git/trunk/tutorial/image/monkey.ppm

  也可以直接从我们之前下载过的~/visp_ws/image文件夹中直接把monkey.ppm文件拷贝到 ~/visp_ws/started文件夹中。此时我们的 ~/visp_ws/started文件夹下应该包含以下三个文件tutorial-viewer.cppCMakeLists.txtmonkey.ppm ,如下图所示
在这里插入图片描述4. 开始编译

  • 新建build文件夹,用于储存编译后的各类文件
mkdir build
  • 进入build文件夹,配置工程
cd build
ccmake .. -DCMAKE_BUILD_TYPE=Release

如果执行第二个指令报错的话,可能需要安装一个gui工具,指令如下
sudo apt install cmake-curses-gui

  • 进入配置界面
    在这里插入图片描述
  • 点击键盘上的“c”键,进入以下界面
    在这里插入图片描述
  • 再次点击“c”键,进入以下界面
    在这里插入图片描述
  • 点击“g”键生成Makefile文件并退出
  • 编译并生成可执行文件
make

5.运行程序显示效果

./tutorial-viewer ../monkey.ppm

结果如下
在这里插入图片描述

如果大家对于深度学习与计算机视觉领域感兴趣,希望获得更多的知识分享与最新的论文解读,欢迎关注我的个人公众号“深视”。在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
这个问题是由于在运行"sudo apt-get update"命令时,无法获取到"http://realsense-hw-public.s3.amazonaws.com/Debian/apt-repo/dists/focal/InRelease"这个链接的资源,返回了403 Forbidden的错误。\[1\]\[2\] 根据引用\[3\]中提到的解决方法,你可以尝试编辑"/etc/apt/source.list"文件,并将"http://realsense-hw-public.s3.amazonaws.com/Debian/apt-repo/dists/focal"这个源的勾选去掉,然后选择"https://librealsense.intel.com/Debian/apt-repo"这个选项。然后再次运行"sudo apt-get update"命令,应该就能成功更新了。 请注意,这个解决方法是基于引用\[3\]中提到的情况,如果你的情况不同,可能需要采取其他的解决方法。 #### 引用[.reference_title] - *1* *3* [实验日志二: Sawyer IBVS control____Visp以及visp-ros平台的安装](https://blog.csdn.net/Maomaokingya/article/details/121086729)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [解决E: 仓库 “http://realsense-hw-public.s3.amazonaws.com/Debian/apt-repo bionic InRelease” 没有...](https://blog.csdn.net/weixin_45498383/article/details/128592673)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

深视

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值