Basler area scan camera wrapper

Use this C++/CLI wrapper with Basler cameras for .NET Core projects


Table of Contents


Usage

Import CoreCamera class:

using CoreCamera;

Initialize camera object and set camera parameters:

private ICameraCore _camera;

public void Initialize()
{
    AppDomain.CurrentDomain.ProcessExit += new EventHandler(CurrentDomain_ProcessExit);
    _camera = new CameraCore("Front1", ImageArrived);
    _camera.SetExposure(10000);
    _camera.SetHeight(1000);
    _camera.SetWidth(1000);
    _camera.SetGain(200);

    _camera.UpdateSettings();
    _camera.Grab();
}

Create action for image arrived event:

public void ImageArrived(byte[] bytes, int height, int width)
{
    Mat img = new Mat(height, width, DepthType.Cv8U, 1);
    img.SetTo(bytes);
    Console.WriteLine("Saving test image");
    CvInvoke.Imwrite("test.jpg", img);
    _camera.StopGrab();
}        

Blazor

You can use this library with Blazor

Add this code to your page:

@page "/"
@using System.IO
@using BlazorAppCamera.Data

@inject CameraService CameraService

<h1>Camera test</h1>
<button class="btn btn-primary" @onclick="GetFrame">Get image</button>

<img src="@_imageString" alt="Image">

@code
{

    private string _imageString = null;
    public void GetFrame()
    {
        CameraService.StartGrab(ImageArrived);
    }

    void ImageArrived(byte[] bytes)
    {
        _imageString = $"data:image/png;base64,{Convert.ToBase64String(bytes)}";
    }
}

Create Camera Service:

using System;
using CoreCamera;

namespace BlazorAppCamera.Data
{
    public class CameraService

    {
        private readonly ICameraCore _camera;
        private Action<byte[]> _action;

        public CameraService()
        {
            _camera = new CameraCore("Front1", ImageArrived);
        }

        public void ImageArrived(byte[] bytes, int height, int width)
        {
            _action.Invoke(bytes);
        }

        public void StartGrab(Action<byte[]> action)
        {
            _action = action;
            _camera.SetExposure(50000);
            _camera.SetHeight(1000);
            _camera.SetWidth(1000);
            _camera.UpdateSettings();
            _camera.Grab();
        }
    }
}

License

License