Basler Pylon camera API



在挂架API的c++文档中,他们使用一个循环来显示抓取的图像。此代码运行良好:

//Basler Pylon示例

main()
{
CInstantCamera camera( 
CTlFactory::GetInstance().CreateFirstDevice());
camera.StartGrabbing( c_countOfImagesToGrab);
while ( camera.IsGrabbing())
{
// Wait for an image and then retrieve it. A timeout of 
5000 ms is used.
camera.RetrieveResult( 5000, ptrGrabResult, 
TimeoutHandling_ThrowException);
Pylon::DisplayImage(1, ptrGrabResult);
}
}

在我的应用程序中,我通过实现UseBasler类来使用API,它在构造函数中实例化相机,然后使用一个函数一次显示一帧:

class UseBasler()
{
public: 
CInstantCamera* camera;
void DisplayOneFrame();
}

UseBasler::UseBasler()
{
camera = new CInstantCamera(CTlFactory::GetInstance().CreateFirstDevice());
camera->StartGrabbing( c_countOfImagesToGrab);
}

void UseBasler::DisplayOneFrame()
{
if ( camera->IsGrabbing())
{
// Wait for an image and then retrieve it. A timeout of 5000 ms is used.
camera->RetrieveResult( 5000, ptrGrabResult, TimeoutHandling_ThrowException);
//Display image
}
}

我在行的DisplayFrame功能中遇到Acces违规

camera->RetrieveResult(5000,ptrGrabResult,TimeoutHandling_ThrowException(;

我很感激你能告诉我为什么会崩溃。顺便说一句,当我将调用转移到函数RetrieveResult时在我创建相机后,我没有遇到这种崩溃。

您的包装类实现未命中Pylon::CGrabResultPtr-ptrGrabResult声明。将其制成私人类字段。

我很乐意在析构函数上添加一些清理,比如camera->Close((。一般来说,您的类实例持有对真实设备的访问权限,该设备有时可能会断开连接。Pylon API为您提供了几个选项来跟踪这些将由包装器实现的更改。

最新更新