天天看点

pylonUSB3.0相机在Ubuntu16.04系统上使用opencv显示图像〇.本文内容包括一.pylon相机的安装二.Opencv的安装三.Qt的安装四.测试工程

〇.本文内容包括

opencv在Ubuntu上的安装,qt在Ubuntu上的安装,basler相机在Ubuntu系统上的使用与开发环境配置。qt示例工程说明如何获取pylon相机图片并用opencv显示。

版本概览:Ubuntu16.04,opencv3.4.0,gcc5.4.0,qt5.10.1,pylon5.0.11。

一.pylon相机的安装

1.连接相机

把basler相机接到usb3.0接口上,执行lsusb,寻找basler相机是否出现。

lsuab
           
pylonUSB3.0相机在Ubuntu16.04系统上使用opencv显示图像〇.本文内容包括一.pylon相机的安装二.Opencv的安装三.Qt的安装四.测试工程

2.安装basler安装软件包

https://www.baslerweb.com/cn/sales-support/downloads/software-downloads/pylon-5-0-11-linux-x86-64-bit-debian/

下载pylon_5.0.11.10914-deb0_amd64.deb,按deb包的方式安装。

安装成功后会出现pylonviewer程序,这时打开并不能连接相机,提示LIBUSB_ERROR_ACCESS。

这时执行如下命令:

sudo gedit /ect/udev/rules.d/-basler-cameras.rules 
SUBSYSTEM=="usb", ATTRS{idVendor}=="2676", ATTRS{idProduct}=="ba02", MODE:="777", TAG+="uaccess", TAG+="udev-acl"
           

把MODE从666改到777,保存并退出,重启udev。

sudo /etc/init.d/udev restart
           

这时可以用pylonviewer连接相机。

pylonUSB3.0相机在Ubuntu16.04系统上使用opencv显示图像〇.本文内容包括一.pylon相机的安装二.Opencv的安装三.Qt的安装四.测试工程

安装开发套件

https://www.baslerweb.com/en/sales-support/downloads/software-downloads/pylon-5-0-11-linux-x86-64-bit/

下载pylon 5.0.11 Camera Software Suite Linux x86 (64 bit)文件,阅读帮助文件安装。

帮助文件建议安装到/opt/pylon5。

安装后在/opt/pylon5下能找到开发需要的包含文件和库文件。

二.Opencv的安装

1.参考资料

参考http://blog.csdn.net/atpalain_csdn/article/details/50828830中的方法安装。

linux系统Qt调用opencv的编译过程(ubuntu14.04 kylin+qt5.5+opencv2.4.10)

2.版本概述

Ubuntu16.04

gcc版本5.4.0

opencv版本3.4.0.

3.注意事项

在Ubuntu系统下一般是利用源码安装,没有像windows那样的编译好的自解压文件。

网上有说要降低gcc版本,但在编译过程中使用5.x.x版本的gcc也没有出现问题。

原文中在cmake时设置如下参数:

在编译过程中出现如下错误:

猜测是选项开的太多,有些不支持导致编译失败。于是一切从头来过

cmake是的参数只留WITH_QT,如下:

最后编译成功。

三.Qt的安装

qt各版本下载地址:http://download.qt.io/archive/qt/

最好下载离线安装版,在线版安装速度慢,经常安装到一半出错。这里使用的是:

qt-opensource-linux-x64-5.10.1.run.

安装方法http://blog.csdn.net/xungjhj/article/details/71600437,ubuntu下安装QT5.7.1

四.测试工程

新建qt工程,在main.cpp中添加代码

首先从pylon相机获取一幅图片,然后使用opencv进行显示。

#include "mainwindow.h"
#include <QApplication>
#include <pylon/PylonIncludes.h>
#include <opencv.hpp>

using namespace cv;
using namespace Pylon;
using namespace std;

static const uint32_t c_countOfImagesToGrab = ;

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

    //=============================================
    int exitCode = ;

    PylonInitialize();
    IplImage pImage;

    CPylonImage target;

    try
    {
        CInstantCamera camera( CTlFactory::GetInstance().CreateFirstDevice());
        cout << "Using device " << camera.GetDeviceInfo().GetModelName() << endl;
        camera.MaxNumBuffer = ;
        camera.StartGrabbing( c_countOfImagesToGrab);
        CGrabResultPtr ptrGrabResult;
        while ( camera.IsGrabbing())
        {
            camera.RetrieveResult( , ptrGrabResult, TimeoutHandling_ThrowException);

            if (ptrGrabResult->GrabSucceeded())
            {
                CImageFormatConverter converter;
                converter.OutputPixelFormat=PixelType_RGB8packed;
                converter.OutputBitAlignment=OutputBitAlignment_MsbAligned;
                converter.Convert(target,ptrGrabResult);
                Mat Image(target.GetHeight(),target.GetWidth(),CV_8UC3,target.GetBuffer(),Mat::AUTO_STEP);
                ptrGrabResult.Release();
                namedWindow( "image");
                imshow( "image", Image );
                waitKey();
            }
            else
            {
                cout << "Error: " << ptrGrabResult->GetErrorCode() << " " << ptrGrabResult->GetErrorDescription() << endl;
            }
        }
    }
    catch (const GenericException &e)
    {

        cerr << "An exception occurred." << endl << e.GetDescription() << endl;
        exitCode = ;
    }

    cerr << endl << "Press Enter to exit." << endl;
    while( cin.get() != '\n');

    PylonTerminate();
    //=================================================================


    return a.exec();
}
           
pylonUSB3.0相机在Ubuntu16.04系统上使用opencv显示图像〇.本文内容包括一.pylon相机的安装二.Opencv的安装三.Qt的安装四.测试工程