OPENCV 2.4.9 使用 basler pylon4 连接到 basler gige 相机和 ubuntu14.04

Posted

技术标签:

【中文标题】OPENCV 2.4.9 使用 basler pylon4 连接到 basler gige 相机和 ubuntu14.04【英文标题】:OPENCV 2.4.9 use basler pylon4 connect to basler gige camera and ubuntu14.04 【发布时间】:2015-04-28 05:47:41 【问题描述】:

我正在尝试使用 opencv 连接到 basler Aca2500-14gm GIGE 相机,但我正在使用 Basler Pylon 4 和 OPENCV 2.4.9 版和一些问题, 使我的 c++ 代码有错误。 我的操作系统 ubuntu14.04

如果有人可以帮助我,我将不胜感激 谢谢。

这里是错误: 错误:‘HWND’没有命名类型 HWND GetWindowHandle() const;

这是我的代码:

在此处输入代码

#include <pylon/PylonIncludes.h>
#include <pylon/PylonGUI.h>

using namespace Pylon;
using namespace std;
static const uint32_t c_countOfImagesToGrab = 100;
int main(int argc, char* argv[])

    int exitCode = 0;
    pylon runtime system
    Pylon::PylonAutoInitTerm autoInitTerm;
    try
    
        CInstantCamera camera( CTlFactory::GetInstance().CreateFirstDevice());

        cout << "Using device " << camera.GetDeviceInfo().GetModelName() << endl;

        buffers
        camera.MaxNumBuffer = 5;
which
        camera.StartGrabbing( c_countOfImagesToGrab);

        CGrabResultPtr ptrGrabResult;
RetrieveResult() method
        while ( camera.IsGrabbing())
        
ms is used.
            camera.RetrieveResult( 5000, ptrGrabResult, TimeoutHandling_ThrowException);

            if (ptrGrabResult->GrabSucceeded())
            
                cout << "SizeX: " << ptrGrabResult->GetWidth() << endl;
                cout << "SizeY: " << ptrGrabResult->GetHeight() << endl;
                const uint8_t *pImageBuffer = (uint8_t *) ptrGrabResult->GetBuffer();
                cout << "Gray value of first pixel: " << (uint32_t) pImageBuffer[0] << endl << endl;

#ifdef PYLON_WIN_BUILD
                Pylon::DisplayImage(1, ptrGrabResult);
#endif
            
            else
            
                cout << "Error: " << ptrGrabResult->GetErrorCode() << " " << ptrGrabResult->GetErrorDescription() << endl;
            
        
    
    catch (GenICam::GenericException &e)
    
        cerr << "An exception occurred." << endl
        << e.GetDescription() << endl;
        exitCode = 1;
    
    cerr << endl << "Press Enter to exit." << endl;
    while( cin.get() != '\n');

    return exitCode;

【问题讨论】:

【参考方案1】:

首先,我建议您使用 Pleora 的 SDK 而不是 Basler 的 GigeVision - 它对其他相机用途更安全,并且比供应商特定的 SDK 更好地设计和实施,并且使用率明显更高。但是,它确实需要许可证才能删除水印。我和 Pleora 没有任何关系。

您发布的示例看起来不完整,但您的错误表明 SDK 认为您正在 Windows 中编译。这与 OpenCV 无关,与 PylonGUI.h 包含有关,请尝试在 #ifdef PYLON_WIN_BUILD 中保护它。

【讨论】:

首先,感谢您的回答。我在 ubuntu14.04 上尝试用户 basler pylon 示例代码,但使示例代码具有相同的错误('HWND' 没有命名类型 HWND GetWindowHandle() const;) 正如我所提到的,这很可能与宏定义相关 - 就像他们正在寻找 _linux 或 __linux- 或其他变体,而 Ubuntu 14.04 中的 gcc 堆栈没有定义他们正在寻找的那个。在 SDK 标头中搜索 typedef x HWND(例如 x 可以是 int 或句柄)并向后工作。 再次使用 Pleora 的 SDK - 表明 basler 在 linux 上测试了他们的 SDK:我发现他们在 HWND CPylonImageWindow::GetWindowHandle 中没有提供任何类型定义或 HWND 处理。我在所有包含的共享对象中搜索了 CPylonImageWindow,但没有提供任何引用。因此,要么他们不支持在 linux 上使用 PylonGUI.h,要么当前版本的 SDK 现在已损坏(wrt GUI),应该通知他们。

以上是关于OPENCV 2.4.9 使用 basler pylon4 连接到 basler gige 相机和 ubuntu14.04的主要内容,如果未能解决你的问题,请参考以下文章

如何快速连接Basler工业摄像头,获取并保存图像和视频(python+opencv+pypylon)

OpenCV 库中的错误 - 2.4.9

Python:如何使用特定版本 2.4.9 pip install opencv2?

1-opencv 2.4.9下载地址

将 Opencv_2.4.9 与 Visual Studio 一起使用时出现错误 C1075? [关闭]

ORB 未检测 opencv 2.4.9 中的关键点