Using EGrabberBridge
using Euresys;
using Euresys.EGrabber;
using Euresys.Open_eVision;
using System;
static partial class Snippet
{
static void UsingEGrabberBridge()
{
/////////////////////////////////////////////////////////////////////
// This code snippet shows how to convert an EGrabber buffer to an //
// EImageBW8. //
/////////////////////////////////////////////////////////////////////
// Construct the EGrabber objects.
// WARNING: EGrabber is using an EGenTL instance,
// you must dispose of EGenTL before disposing of EGrabber.
Euresys.EGrabber.EGenTL genTL = new Euresys.EGrabber.EGenTL();
EGrabber grabber = new EGrabber(genTL);
// Allocate one buffer
grabber.ReallocBuffers(1);
//....
// Start the grabber acquisition of one buffer
grabber.Start(1);
// Get the acquired buffer
using (Euresys.EGrabber.ScopedBuffer buffer = new Euresys.EGrabber.ScopedBuffer(grabber))
{
// Convert the ScopedBuffer to an Open eVision data container
ulong width = (ulong)buffer.GetInfo<SizeT>(BUFFER_INFO_CMD.BUFFER_INFO_WIDTH);
ulong height = (ulong)buffer.GetInfo<SizeT>(BUFFER_INFO_CMD.BUFFER_INFO_HEIGHT);
IntPtr ptr = buffer.GetInfo<IntPtr>(BUFFER_INFO_CMD.BUFFER_INFO_BASE);
ulong pitch = (ulong)buffer.GetInfo<SizeT>(BUFFER_INFO_CMD.BUFFER_INFO_CUSTOM_LINE_PITCH);
EImageBW8 image = new EImageBW8();
image.SetImagePtr((int)width, (int)height, ptr, (int)pitch);
// Here the image is inverted
EImageBW8 invertedImage = new EImageBW8(image.Width, image.Height);
EasyImage.Oper(EArithmeticLogicOperation.Invert, image, invertedImage);
}
}
}
#include <EGrabber.h>
#include <FormatConverter.h>
#include <Open_eVision.h>
void UsingEGrabberBridge()
{
/////////////////////////////////////////////////////////////////////
// This code snippet shows how to go from an EGrabber buffer to an //
// EGrabberImageBW8, compatible with Open eVision processing //
/////////////////////////////////////////////////////////////////////
using namespace Euresys::Open_eVision;
using namespace Euresys;
// Construct the EGrabber objects.
// The FormatConverter is optional and will automatically convert the EGenTL buffer to
// the chosen Open eVision image type
// WARNING: EGrabberCallbackOnDemand and FormatConverter are using an EGenTL instance, you must dispose them before disposing it.
EGenTL genTL;
EGrabber<CallbackOnDemand> grabber(genTL);
// Allocate one buffer
grabber.reallocBuffers(1);
//...
// Start the grabber acquisition of one buffer
grabber.start(1);
// Get the acquired buffer
ScopedBuffer buffer(grabber);
// Convert the ScopedBuffer to an Open eVision data container
EGrabberBridge::EGrabberImageBW8 image(buffer.getInfo());
// Stop the grabber
grabber.stop();
// Use the EGrabberImageBW8 as an Open eVision EImage Object
// Here an inversion of the image is performed
EImageBW8 invertedImage(image.GetWidth(), image.GetHeight());
EasyImage::Oper(EArithmeticLogicOperation_Invert, &image, &invertedImage);
}
def UsingEGrabberBridge():
#####################################################################
## This code snippet shows how to go from an EGrabber buffer to an ##
## EGrabberImageBW8, compatible with Open eVision processing ##
#####################################################################
import open_evision as oev
import egrabber
import egentl
# Construct the EGrabber objects.
genTL = egentl.EGenTL()
grabber = egrabber.EGrabber(genTL)
# Allocate one buffer
grabber.realloc_buffers(1)
# ...
# Start the grabber acquisition of one buffer
grabber.start(1)
# Get the acquired buffer
with egrabber.Buffer(grabber) as buffer:
# Convert the ScopedBuffer to an Open eVision data container
w = buffer.get_info(egrabber.BUFFER_INFO_WIDTH, egrabber.INFO_DATATYPE_SIZET)
h = buffer.get_info(egrabber.BUFFER_INFO_HEIGHT, egrabber.INFO_DATATYPE_SIZET)
ptr = buffer.get_info(egrabber.BUFFER_INFO_BASE, egrabber.INFO_DATATYPE_PTR)
pitch = buffer.get_info(egrabber.BUFFER_INFO_CUSTOM_LINE_PITCH, egrabber.INFO_DATATYPE_SIZET)
image = oev.EImageBW8()
image.SetImagePtr(w, h, ptr, pitch * 8)
# Here an inversion to the image is performed
inverted_image = oev.EImageBW8(image.Width, image.Height)
oev.EasyImage.Oper(oev.EArithmeticLogicOperation.Invert, image, inverted_image)