ViSP库在windows系统和Ubuntu系统下的安装与vs2015和qt上的例程测试

20 篇文章 6 订阅
4 篇文章 0 订阅

一.ViSP库介绍:

ViSP是Visual Servoing Platform的简称,它是一个用于快速开发视觉伺服应用的c++库。ViSP由位于Inria Rennes的Inria Lagadic团队开发和维护。
ViSP 官方网站: https://visp.inria.fr
ViSP 维基百科: https://github.com/lagadic/visp/wiki
ViSP 在github上的源代码: https://github.com/lagadic/visp
Visp的软件架构


这里写图片描述

一个更详细的介绍可以参考官方网站:
http://visp-doc.inria.fr/doxygen/visp-daily/index.html

二.Windows下的安装:

在windows下只能以源码安装,
http://visp-doc.inria.fr/doxygen/visp-daily/tutorial_install_src.html
根据对应的vs版本选择教程


这里写图片描述

教程给的很详细,基本上按照步骤操作不会出现问题。
基本过程是按照需要安装各种必须和可选第三方库,其中opencv,矩阵运算,线性代数库等是必须得,其它比如要支持basler相机就要选择安装pylon第三方库等。安装完成后设置刚才安装的各种第三方库的环境变量,这样在编译ViSP主体的时候可以找到这些库。

三.Windows下的测试:

3.1.按照安装教程创建工程

安装完成后,按照教程跑通第一个显示图像的demo。
http://visp-doc.inria.fr/doxygen/visp-daily/tutorial-getting-started.html
按照官网的教程,在windows环境下开发步骤繁琐,要用cmake生成vs工程再编译,所以不推荐。

3.2.直接使用vs2015创建工程

在vs中新建空白vs控制台工程,把包含文件路径,库文件路径,附加依赖性设置好,这些都在make install生成的文件夹下。目前经过测试可以编译通过,但是在debug模式运行时出错,提示“应用程序无法正常启动(0xc000007b)”,在release模式下可以运行。


这里写图片描述

该问题目前还不能解决,但既然编译都通过了,应该不是什么大的问题。

具体代码展示:

头文件:

#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>

main函数:

int main()
{
    vpImage<vpRGBa> I;
    vpImageIo::read(I, "123.jpg");
    vpDisplayGDI d(I, vpDisplay::SCALE_AUTO);

    vpDisplay::setTitle(I, "My image");
    vpDisplay::display(I);
    vpDisplay::flush(I);
    std::cout << "A click to quit..." << std::endl;
    vpDisplay::getClick(I);
  }
}

运行效果图:

这里写图片描述

一个在VS2015中使用visp库来显示jpg图片的的完整测试例程可以在CSDN或者github上下载。地址将在评论去上传。

四.Ubuntu系统下的安装:

在Ubuntu系统下有两种方法,apt-get方法和从源码安装方法,推荐后者。

4.1.apt-get方法

sudo apt-get install libvisp-dev

具体步骤参考教程:http://visp-doc.inria.fr/doxygen/visp-daily/tutorial-install-ubuntu-package.html
这种方法经过测试,有一些模块它没有默认安装,在编译教程提供的demo时会找不到头文件等。比如basler相机模块,采用这种方法安装的,在用grabber抓取相机图片时,将不能使用basler相机。

4.2.从源码安装方法

Ubuntu系统下的从源码安装臂windows下的简单,大部分第三方库的安装都是通过apt-get来安装。具体步骤参见教程。
http://visp-doc.inria.fr/doxygen/visp-daily/tutorial-install-ubuntu.html
在安装过程中用到ccmake,只是一个gui版本的cmake,可以设置开关编译某个模块,设置安装路径。

五.Ubuntu系统下的测试:

5.1.按照安装教程下载和编译工程

在Ubuntu系统下完全可以按照教程操作而不会出错。这里需要注意的是,如果ViSP是用apt-get方式安装的,那么有些demo可能编译通不过。所以在前一步推荐使用从源码安装。
http://visp-doc.inria.fr/doxygen/visp-daily/tutorial-image-display.html

5.2.在QT中使用visp库

demo测试完成后,和windows系统一样,希望在图像界面下开发。这里选择QT。找显示图片的demo,把代码放到qt自动生成的main.cpp中。在pro文件中加入visp安装后的库目录和指定版本的opencv的库目录。并且要把指定版本的opencv的库目录放到visp库目录前面。实际上据猜测,如果在系统中只安装了一个版本的opencv,那么不需要在pro文件中添加oepncv的库文件。而在目前所用的Ubuntu系统中,由于安装多个版本的ros,依赖不同的opencv版本,所用需要特别指定。并在/etc/ls.so.conf中加入这些库的路径后刷新。

具体代码实现:
头文件:

#include <visp3/blob/vpDot2.h>
#include <visp3/core/vpPixelMeterConversion.h>
#include <visp3/gui/vpDisplayGDI.h>
#include <visp3/gui/vpDisplayOpenCV.h>
#include <visp3/gui/vpDisplayX.h>
#include <visp3/io/vpImageIo.h>
#include <visp3/vision/vpPose.h>

#include <visp3/core/vpImage.h>
#include <visp3/gui/vpDisplayGDI.h>
#include <visp3/gui/vpDisplayOpenCV.h>
#include <visp3/gui/vpDisplayX.h>
#include <visp3/sensor/vpPylonFactory.h>

main函数:

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    MainWindow w;
    w.show();

    unsigned int opt_camera = 0;
    std::string opt_device("USB");

    vpPylonFactory &factory = vpPylonFactory::instance();
    vpPylonGrabber *g;
    g = factory.createPylonGrabber(vpPylonFactory::BASLER_USB);


    vpImage<unsigned char> I;
    vpImageIo::read(I, "square.pgm");

    g->open(I);
    try {
        g->setCameraIndex(opt_camera);

        vpDisplayOpenCV d(I);


        while (1)
        {
            std::cout << "A new pic: ";
            g->acquire(I);
            std::cout << I.getHeight() << I.getWidth() <<std::endl;
            vpDisplay::display(I);

            if (vpDisplay::getClick(I, false))
              break;

            vpDisplay::flush(I);

            vpTime::wait(40);
        }
    } catch (const vpException &e) {
        std::cout << "Catch an exception: " << e.getMessage() << std::endl;
    }

    return a.exec();
}

一个在QT中使用visp库来抓取pylon相机的测试例程可以在CSDN或者github上下载。地址将在评论去上传。

  • 0
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

仟人斩

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

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

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

打赏作者

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

抵扣说明:

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

余额充值