开发环境:Unbuntu 18.04 LTS + ROS Melodic + ViSP 3.3.1
文章内容主要参考ViSP官方教学文档:https://visp-doc.inria.fr/doxygen/visp-daily/tutorial_mainpage.html
本文介绍了如何使用ViSP创建一幅图像,并在窗口中显示出来。如果你已经按照ViSP学习笔记(二):使用CMake编译ViSP工程中的步骤,下载了image文件夹并完成了CMake步骤,那么下面只需要进行简单的编译和执行工作,就能完成图像的创建和显示。
1.创建并显示一幅图像
第一步我们执行的是image中的 tutorial-image-display.cpp例程,文件内容如下
#include <visp3/gui/vpDisplayGDI.h>
#include <visp3/gui/vpDisplayX.h>
int main()
{
vpImage<unsigned char> I(2160, 3840, 128); //创建一幅3840*2160的图像,像素的灰度值设置为128
try {
// 依次尝试不同的图像显示工具
#if defined(VISP_HAVE_X11)
vpDisplayX d(I);
#elif defined(VISP_HAVE_GDI)
vpDisplayGDI d(I);
#endif
vpDisplay::setTitle(I, "My image");// 设置图像名称
vpDisplay::display(I); //显示图像
vpDisplay::displayCircle(I, I.getHeight() / 2, I.getWidth() / 2, 200, vpColor::red, true); //在图像中心绘制一个半径为200的红色的圆
vpDisplay::flush(I); //在窗口中显示图像
std::cout << "A click to quit..." << std::endl;
vpDisplay::getClick(I);
} catch (const vpException &e) {
std::cout << "Catch an exception: " << e.getMessage() << std::endl;
}
进入build文件夹,并编译程序
cd ~/visp_ws/image/build
make tutorial-image-display
执行程序
.
/tutorial-image-display
显示结果如下
由于图像的分辨率太高超过了屏幕的显示范围,因此只有一部分图像显示出来,下面我们来介绍如何手动和自动的调整图像显示比例。
2.手动调整显示比例
需要按照下面的方式对代码进行修改
#if defined(VISP_HAVE_X11)
vpDisplayX d(I, vpDisplay::SCALE_5); // 增加一个尺度调整参数vpDisplay::SCALE_5,表示缩小5倍显示
#elif defined(VISP_HAVE_GDI)
vpDisplayGDI d(I, vpDisplay::SCALE_5);
#endif
或者按照下面方式修改
#if defined(VISP_HAVE_X11)
vpDisplayX d;
#elif defined(VISP_HAVE_GDI)
vpDisplayGDI d;
#endif
d.setDownScalingFactor(vpDisplay::SCALE_5);// 调用尺度调整函数setDownScalingFactor
d.init(I); // 初始化
}
其余部分不做修改,显示效果如下
上述内容已经通过
tutorial-image-display-scaled-manu.cpp 例程文件实现了,可以通过执行以下命令来查看效果
cd ~/visp_ws/image/build
make tutorial-image-display-scaled-manu
./tutorial-image-display-scaled-manu
3.自动调整显示比例
通过程序自动调整显示的比例,以适应屏幕显示的需求。对代码作以下修改
#if defined(VISP_HAVE_X11)
vpDisplayX d(I, vpDisplay::SCALE_AUTO); //自动设置尺度调整参数
#elif defined(VISP_HAVE_GDI)
vpDisplayGDI d(I, vpDisplay::SCALE_AUTO);
#endif
或者
#if defined(VISP_HAVE_X11)
vpDisplayX d;
#elif defined(VISP_HAVE_GDI)
vpDisplayGDI d;
#endif
d.setDownScalingFactor(vpDisplay::SCALE_AUTO); // 调用尺度调整函数
d.init(I);
}
其余部分不做修改,显示效果如下
上述内容已经通过
tutorial-image-display-scaled-auto.cpp 例程文件实现了,可以通过执行以下命令来查看效果
cd ~/visp_ws/image/build
make tutorial-image-display-scaled-auto
./tutorial-image-display-scaled-auto
如果大家对于深度学习与计算机视觉领域感兴趣,希望获得更多的知识分享与最新的论文解读,欢迎关注我的个人公众号“深视”。
评论(0)
您还未登录,请登录后发表或查看评论