Auf dieser Seite werden Cookies verwendet. Details und Hinweise zu den Einstellungen sind in unseren Datenschutzregeln.
Der weitere Gebrauch von unser Webseite, ohne Änderung der Einstellungen, bedeutet das Einverständnis mit diesen Regeln.

Akzeptieren (Notiz ausblenden)
POL ENG GER 中文(繁體)

Codebeispiele

Diese Seite zeigt die Fähigkeiten und den Stil von Adaptive Vision Library mit sehr kurzen Codeausschnitten. Beziehen Sie sich bitte auf die offiziellen Beispiele, die mit dem Produkt installiert werden, um vollständige Inspektionen und Beispielanwendungen anzuschauen.

Bildverarbeitung

Einige der typischen Bildverarbeitungswerkzeuge sind Glättungsfilter. Hier wird die Gauß- und Median-Bildrauschunterdrückung gezeigt. Beachten Sie, dass image1 die Eingabe und image2 die Ausgabe ist.

SmoothImage_Gauss( image1, NIL, 2.0f, 2.0f, 2.5f, image2 );
SmoothImage_Median( image1, NIL, NIL, SmoothImageMedianKernel::Box, 3, image2 );

Eingabe:

Ausgabe (Gauss):

Ausgabe (Median):

Regionanalyse

Eine Region ist eine Gruppe von Pixelorten oder ein komprimiertes binäres Bild. Der nachstehende Code zeigt die Extraktion einer Region von roten Pixeln und denen Nachbearbeitung.

Region region1, region2, region3, region4;
ThresholdToRegion_HSx(image1, NIL, HSxColorModel::HSV, 0, 10, 190, 255, 65, 255, region1);
CloseRegion(region1, RegionMorphologyKernel::Ellipse, 15, 15, region2);
FillRegionHoles(region2, RegionConnectivity::EightDirections, NIL, 10000, region3);
DrawRegion(image1, region3, NIL, Pixel(0, 255, 0), 1.0);
OpenRegion(region3, RegionMorphologyKernel::Ellipse, 15, 15, region4);
DrawRegion(image1, region4, NIL, Pixel(255, 0, 0), 1.0);

Eingabe:

Ausgabe:

Codelesen

DataMatrix-Codes werden in zwei Schritten gelesen: zunächst werden Kandidaten entdeckt und dann werden die Codes an den Fundstellen erkannt.

DataMatrixCodeParams codeParams;
DataMatrixDetectionParams detectionParams;
Conditional<DataCode> code;
Array<Path> candidates;

ReadSingleDataMatrixCode(image1, NIL, NIL, codeParams, detectionParams, code, candidates);

if (code != NIL)
{
	DrawingStyle style(DrawingMode::HighQuality, 1.0f, 3.0f, false, NIL, 2.0);
	DrawPath(image1, code.Get().Outline(), NIL, Pixel(255, 0, 0), style);
	DrawString(image1, code.Get().Text(), Location(10, 10), NIL, Anchor2D::TopLeft, Pixel(255, 0, 0), style, 18.0f, 0.0f, NIL);
}

Eingabe:

Ausgabe:

Shape Fitting

Shape Fitting ermöglicht das Lokalisieren von Formen, deren geschätzte Orte vorher bekannt sind. Hier wird die Anpassung einer Strecke in zwei Schritten gezeigt: eine Fitting-Abbildung wird erstellt und dann das Fitting selbst durchgeführt.

// Create shape fitting map
SegmentFittingField field(Segment2D(40.0f, 30.0f, 40.0f, 130.0f), 30.0f);
SegmentFittingMap map;
ImageFormat imageFormat(image1.Width(), image1.Height(), PlainType::UInt8, 3);

CreateSegmentFittingMap(imageFormat, field, NIL, 12, 5, InterpolationMethod::Bilinear, map);

// Fit the shape
EdgeScanParams params;
params.minMagnitude = 10.0f;
params.edgeTransition = EdgeTransition::BrightToDark;
Conditional<Segment2D> segment;
FitSegmentToEdges(image1, map, params, Selection::Best, NIL, 0.1f, NIL, segment);
if (segment != NIL)
{
	DrawingStyle style(DrawingMode::HighQuality, 1.0f, 2.0f, false, NIL, 0.0f);
	DrawSegment(image1, segment.Get(), NIL, Pixel(255, 0, 0), style, MarkerType::None, 0.0f);
}

Eingabe:

Ausgabe:

Diagnostik:

Kantenbasierte Musteranpassung

Musteranpassungstechniken ermöglichen das Lokalisieren von Objekten an beliebigen Orten und Rotationen. Ein Beispiel einer typischen Anwendung ist das Entdecken von Passermarken auf einer elektronischen Schaltung:

Image image1;
LoadImage("fiducial_template.png", false, image1);

Conditional<EdgeModel> model;
CreateEdgeModel(image1, NIL, NIL, 0, NIL, 0.0f, 35.0f, 15.0f, -45.0f, +45.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, model);

Image image2;
LoadImage("fiducial_input.png", false, image2);

Conditional<Object2D> object;
if (model != NIL)
{
	LocateSingleObject_Edges(image2, NIL, model.Get(), 1, 3, 10.0f, true, false, 0.7f, object);

	if (object != NIL)
	{
		DrawingStyle style(DrawingMode::HighQuality, 1.0f, 3.0f, false, NIL, 2.0);
		DrawRectangle(image2, object.Get().Match(), NIL, Pixel(255, 0, 0), style);
	}
}

Muster:

Eingabe:

Ausgabe:

GigE Vision-Bildausnahme

Adaptive Vision Library unterstützt die Bildaufnahme von allen GigE Vision- und GenICam-kompatiblen Kameras und Frame Grabbern. Hier wird das Schema der Bildaufnahme von GigE Vision-Geräten gezeigt:

// Initialize acquisition
GigEHandle hDev = GigEVision_OpenDevice("169.254.1.81");
GigEVision_StartAcquisition(hDev, "Mono8");

Image image1;
while (...)
{
	// Grab image
	GigEVision_ReceiveImage(hDev, image1);

	// Process image
	...
}

// Finalize acquisition
avl::GigEVision_StopAcquisition(hDev);
avl::GigEVision_CloseHandle(hDev);