Basler Pylon 简单抓图


简单抓图步骤:

  • StartGrabbing 开始抓取,状态 isGrabbing
  • RetrieveResult 接收数据,完成后触发 StopGrabbing
  • 数据由 CGrabResultPtr 指针接收,状态 GrabSucceeded
  • runtime 由 PylonInitialize 初始化,并由 PylonTerminate 销毁

具体代码如下:

 Step0:初始化 Pylonruntime

    // Before using any pylon methods, the pylon runtime must be initialized.
    PylonInitialize();
    //Pylon::PylonAutoInitTerm autoInitTerm;

 

Step1: 创建 Camera 实例

        // Create an instant camera object with the camera device found first.
        IPylonDevice *pDevice = CTlFactory::GetInstance().CreateFirstDevice();
        CInstantCamera camera;
        camera.Attach(pDevice);

 

Name of Class Usable for Device Type Device-specific
Pylon::CInstantCamera (recommended) All cameras No
Pylon::CBaslerUniversalInstantCamera (recommended for novice users) All cameras No
Pylon::CBasler1394InstantCamera IIDC 1394 compliant cameras Yes
Pylon::CBaslerGigEInstantCamera GigE Vision compliant cameras Yes
Pylon::CBaslerUsbInstantCamera USB3 Vision compliant cameras Yes
Pylon::CBaslerCameraLinkInstantCamera Camera Link compliant cameras Yes

 

step2:开始抓取

        // Start the grabbing of 1 images.
        // The camera device is parameterized with a default configuration which
        // sets up free-running continuous acquisition.
        camera.StartGrabbing(1);

 

step3:构造智能指针接收抓取数据

        // This smart pointer will receive the grab result data.
        CGrabResultPtr ptrGrabResult;

 

step4:判断抓取状态,并接收数据

        // Camera.StopGrabbing() is called automatically by the RetrieveResult() method
        // when c_countOfImagesToGrab images have been retrieved.
        int flag = 0;
        while ( camera.IsGrabbing())
        {
            // Wait for an image and then retrieve it. A timeout of 5000 ms is used.
            camera.RetrieveResult( 5000, ptrGrabResult, TimeoutHandling_ThrowException);

 

step5:判断抓取结果,并处理

            // Image grabbed successfully?
            if (ptrGrabResult->GrabSucceeded())
            {
                // Access the image data.
                cout << "SizeX: " << ptrGrabResult->GetWidth() << endl;
                cout << "SizeY: " << ptrGrabResult->GetHeight() << endl;
                const uint8_t *pImageBuffer = (uint8_t *) ptrGrabResult->GetBuffer();

 

step6:释放 plyon runtime

    // Releases all pylon resources.
    PylonTerminate();

 

调试时,相机意外中断,连不上的处理

The device is controlled by another application. Err: An attempt was made to access an address location which is currently/momentary not accessible. (0xE1018006)

设置环境变量 PYLON_GIGE_HEARTBEAT =1000 即可。


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM