创建一个图片读取,并在windows下窗口显示的程序。

 #include <visp/vpDisplayD3D.h>
#include <visp/vpDisplayGDI.h>
#include <visp/vpDisplayGTK.h>
#include <visp/vpDisplayX.h>
#include <visp/vpDisplayOpenCV.h>
#include <visp/vpImageIo.h>
int main(int argc, char** argv)
{
if(argc != ) {
printf( "Usage: %s <image name.[pgm,ppm,jpeg,png,tiff,bmp,ras,jp2]>\n", argv[] );
return -;
}
vpImage<vpRGBa> I;
try {
vpImageIo::read(I, argv[]);
}
catch(...) {
std::cout << "Cannot read image \"" << argv[] << "\"" << std::endl;
return -;
}
try {
#if defined(VISP_HAVE_X11)
vpDisplayX d(I);
#elif defined(VISP_HAVE_OPENCV)
vpDisplayOpenCV d(I);
#elif defined(VISP_HAVE_GTK)
vpDisplayGTK d(I);
#elif defined(VISP_HAVE_GDI)
vpDisplayGDI d(I);
#elif defined(VISP_HAVE_D3D9)
vpDisplayD3d d(I);
#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(vpException e) {
std::cout << "Catch an exception: " << e << std::endl;
}
}

下面对代码进行逐行解释:

#include <visp/vpDisplayD3D.h>
#include <visp/vpDisplayGDI.h>
#include <visp/vpDisplayGTK.h>
#include <visp/vpDisplayX.h>
#include <visp/vpDisplayOpenCV.h>

以上头文件包括了所有的图片显示的头文件。前两个是windows系统下的,它们要求Direct 3D或者GDI(图像化设备界面)。第三个需要跨平台的GTK库。第四个是类Unix系统下的,且要求libX11可用。最后一个则需要安装跨平台的第三方库OpenCV。

#include <visp/vpImageIo.h>

包含这个头文件允许使用vpImageIo类来从硬盘读取各种格式的图片。

 vpImage<vpRGBa> I;

创建一个每个像素都用RGBa编码的彩色图像。

try {
vpImageIo::read(I, argv[]);
}
catch(...) {
std::cout << "Cannot read image \"" << argv[] << "\"" << std::endl;
return -;
}

从硬盘读取文件,若失败,则输出对应提示。

#if defined(VISP_HAVE_X11)
vpDisplayX d(I);
#elif defined(VISP_HAVE_OPENCV)
vpDisplayOpenCV d(I);
#elif defined(VISP_HAVE_GTK)
vpDisplayGTK d(I);
#elif defined(VISP_HAVE_GDI)
vpDisplayGDI d(I);
#elif defined(VISP_HAVE_D3D9)
vpDisplayD3d d(I);
#else
std::cout << "No image viewer is available..." << std::endl;
#endif

展示图像,第一个可用的图片查看工具被使用。需要注意,一张图像只能有一次展示。

 vpDisplay::getClick(I);

添加鼠标中断。若发生鼠标操作,则中断程序。

05-11 04:42
查看更多