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)
Python:如何使用特定版本 2.4.9 pip install opencv2?