如何在Raspberry Pi中使用Basler GigE相机pylon5 c ++库

时间:2016-11-15 14:38:01

标签: c++ camera shared-libraries raspberry-pi2

我试图从单独的项目中调用pylon5 C ++库,但没有成功。

我一直在寻找答案但是却无法弄清楚我做错了什么。

我想我的问题可能是设置环境变量和/或库路径? (我是基于Linux的初学者,当我在网上阅读教程时,我很容易对一些显而易见的东西感到困惑?我应该知道但我不知道的事情)

我测试过相机本身正在使用我的Raspberry,我可以使用示例代码抓取图像。

我甚至可以修改相机设置(曝光时间等)并拍照并将其保存到SD卡中。所以相机模块不是问题。我的问题更有可能以正确的方式使用共享库。

此外,我已经制作了一些简单的共享库,希望我可以使用我的Pylon相机代码。当我没有在我的库中包含任何Pylon代码时,它工作正常并返回我想要的值。我甚至可以在那里添加Pylon接头,它仍然可以很好地编译。然后,我可以从另一个(在本例中为C#)代码调用我的lib并按预期获得返回值,但是当尝试调用任何Pylon代码(在我的库中)时,将导致'dllNotFoundException'。

我已将我的pylon5代码放在/ opt / pylon5中,正如我从baslerweb.com获得的手册中所建议的那样 http://s.baslerweb.com/media/documents/How%20to%20build%20pylon%20applications%20on%20Raspberry%20Pi.pdf

这是我的项目文件(我正在使用QtCreator)

#-------------------------------------------------

QT       -= gui
QT       += core

TARGET = baslercamera
TEMPLATE = lib

DEFINES += BASLERCAMERA_LIBRARY

SOURCES += baslercamera.cpp \    
    Grab.cpp \
    Image.cpp \
    main.cpp \
    BaslerDLL.cpp


HEADERS += baslercamera.h\
    baslercamera_global.h \
    Image.h \
    Grab.h


unix {
    target.path = /usr/lib
    INSTALLS += target
}


#INCLUDEPATH += $$PWD/../pylon5/include
#DEPENDPATH += $$PWD/../pylon5/include

INCLUDEPATH += /opt/pylon5/include
DEPENDPATH += /opt/pylon5/include


INCLUDEPATH += /home/pi/baslercamera/
DEPENDPATH += /home/pi/baslercamera/

LIBS += "/opt/pylon5/lib" \
    -lpylonc

正如您所看到的,INCLUDEPATH和LIBS变量是我的弱点。我无法弄清楚我应该包含哪些库以及如何正确包含它们。除了将它们包含在我的项目文件中之外,我还应该设置一些环境变量吗?

我也试过设置一些库路径,但我真的不知道我应该在那里做什么。用户手册说

Set the pylon environment variables:
# source ./pylon4/bin/pylon-setup-env.sh pylon4 

然后我用pylon5替换了pylon4。我认为这可能会将环境变量设置为使用pylon库。但我不确定那里会发生什么。塔架5指南说:

Environment Variables
=====================

From pylon 5.0 upwards, no additional environment variables are required to
run pylon-based applications.

For development, though, the compiler must know where pylon is installed.
The pylon samples use the environment variable PYLON_ROOT to find the relevant information.

For your convenience, we created the pylon-setup-env.sh script located in the 
pylon5/bin directory which can carry out the complete setup.

To setup the environment for a pylon installation in <path> execute:
  source <path>/bin/pylon-setup-env.sh <path>

If you want the environment for the standard installation to be persistent, you 
can add
   source /path/to/your/pylon5/bin/pylon-setup-env.sh /path/to/your/pylon5
to ~/.bashrc

For special use cases, you can do a manual environment setup as follows:

   export PYLON_ROOT=/path/to/your/pylon5

Even though there is currently only one variable needed, using pylon-setup-env.sh
is still the preferred way to set up your environment, as we might add more variables
in the future.

我已经尝试了很多方面,我很乐意为我们自己的库中使用这些共享库提供帮助或建议。

1 个答案:

答案 0 :(得分:0)

哇,这个问题很老了,我很惊讶它还没有回答。

我刚刚开始工作,但我的项目使用Scons作为构建系统。不过,我发现的问题是它没有连接足够的库。这就是我设置得到我需要的东西(qmake语法可能关闭):

LIBS += \
  -L/opt/pylon5/lib64 \
  -lpylonbase \
  -lGenApi_gcc_v3_0_Basler_pylon_v5_0 \
  -lGCBase_gcc_v3_0_Basler_pylon_v5_0 \
  -lLog_gcc_v3_0_Basler_pylon_v5_0 \
  -lMathParser_gcc_v3_0_Basler_pylon_v5_0 \
  -lXmlParser_gcc_v3_0_Basler_pylon_v5_0 \
  -lNodeMapData_gcc_v3_0_Basler_pylon_v5_0