故障排除#
运行程序时抛出异常。异常信息:
BaslerGTC/Basler/GenTL_Producer_for_Basler_blaze_101_camera could not be created.
原因:未找到由 pylon Supplementary Package for blaze 提供的 blaze 相机 GenTL Producer。
解决方案: 确保 GENICAM_GENTL64_PATH 环境变量已正确设置。该变量必须包含以下文件夹:
Windows: <PYLON_ROOT>/Runtime/x64
Linux: <PYLON_ROOT>/lib/gentlproducer/gtl
You can use the pylon-setup-env.sh script, located in the <PYLON_ROOT>/bin directory. To set up the environment for a pylon installation in /opt/pylon, execute:
If you want the environment to be persistent, you can add
to ~/.bashrcIf you do not use this script, you will have to set up your environment as follows:
CMake 发出大量警告。
原因:根据 PCL 的版本,PCL 的 CMake 配置文件会引发许多警告。
解决方法:为了构建和运行 Basler blaze 示例,这些警告通常可以忽略。
可以通过传递 -Wno-dev 命令行选项给 CMake 来减少警告的数量。
仅限 Windows:由于缺少 opencv_world*.dll 文件,运行使用 OpenCV 的示例失败。
原因: OpenCV 的路径不在 PATH 环境变量中。
解决方案: 必须将 OpenCV 安装路径添加到 PATH 环境变量中。 将 OpenCV 添加到 PATH 环境变量.
仅限 Windows:由于缺少 OpenNI2.dll 文件,运行使用 PCL 的示例失败。
原因:PCL 一体化安装程序将 OpenNI2.dll 安装到了不在 PATH 中的位置。
解决方案: PCL 安装程序将 DLL 安装到 %ProgramFiles%\OpenNI2\Redist 文件夹中。请将此文件夹添加到您的 PATH 环境变量中,或者将 OpenNI2.dll 复制到 PCL 二进制文件所在的文件夹中(例如 %ProgamFiles%\PCL 1.11.1\bin.
仅限 Windows:使用 PCL 的示例在 CMAKE_BUILD_TYPE 设为 RelWithDebInfo时构建失败,或者使用 CMAKE_BUILD_TYPE 设置为 RelWithDebInfo 构建的示例在执行时崩溃。
原因: PCL 对 RelWithDebInfo 配置的支持已损坏。它没有链接 PCL 用于可视化任务的 VTK 库的发布版本,而是链接了调试版本。这导致库同时引用了 Microsoft C++ 运行时库的调试版本和发布版本,从而导致链接器无法链接可执行文件,或者在运行时导致崩溃。
方案 1: 选择 Release 而不是 RelWithDebInfo.
注意
Visual Studio 的 CMake 支持会自动将 CMake 构建类型设置为 RelWithDebInfo 在创建 Release 构建配置时。您必须手动编辑 CMakeSettings.json 文件,并将 configurationType 字段的值从 RelWithDebInfo 更改为 Release.
方案 2:
- 创建一个副本
%ProgramFiles%\PCL x.y.z\3rdParty\VTK\lib\cmake\vtk-x.y\VTK-Targets-debug.cmake文件。 - 将副本重命名为
VTK-Targets-relwithdebinfo.cmake. - 使用文本编辑器打开文件,并将所有出现的
RELEASE替换为RELWITHDEBINFO. - 清除 CMake 缓存并重新生成缓存。
显示帧率较低。
原因:在 Debug 模式下,编译器生成的代码未进行优化。
解决方法:确保应用程序是以 Release 模式构建的。
仅限 Windows:链接器提示混用了 32 位和 64 位库。
原因:在链接应用程序时,所有二进制文件必须统一为 32 位或 64 位。无法在一个可执行文件中混用 32 位和 64 位库。
解决方法:在生成 Visual Studio 解决方案文件时,确保目标平台(x86 与 x64)与 OpenCV 和 PCL 库的构建平台一致。
在应用程序崩溃或被强行终止后, device is already connected 重启应用程序时会出现错误消息。
原因:当应用程序异常终止时,它无法再关闭与相机的连接。相机必须等待 GigE Vision 心跳超时(Heartbeat Timeout)到期后,才会接受新连接。
通常情况下,如果您是在调试器下运行应用程序且使用的是 pylon 7.0 或更低版本,就会发生这种情况。更高版本的 pylon 会在程序终止时自动关闭相机连接。
解决方法:如果您延长了心跳超时时间,或者在使用 pylon 7.0 及更低版本且在调试器下运行应用程序,您必须对相机进行断电重启,或者将相机从网络中断开一小会儿。
有关如何控制 GigE Vision 心跳超时的更多详细信息,请参阅调试 C++ 应用程序并控制 GigE Vision 心跳或调试 .NET 应用程序并控制 GigE Vision 心跳部分。