KlassenKlassenKlassenKlassen | | | | Operatoren

find_1d_bar_code_scanlineT_find_1d_bar_code_scanlineFind1dBarCodeScanlinefind_1d_bar_code_scanlineFind1dBarCodeScanlineFind1dBarCodeScanline (Operator)

Name

find_1d_bar_code_scanlineT_find_1d_bar_code_scanlineFind1dBarCodeScanlinefind_1d_bar_code_scanlineFind1dBarCodeScanlineFind1dBarCodeScanline — Einen Barcode in einem Bild finden.

Warnung

find_1d_bar_code_scanlinefind_1d_bar_code_scanlineFind1dBarCodeScanlinefind_1d_bar_code_scanlineFind1dBarCodeScanlineFind1dBarCodeScanline ist veraltet und wird nur aus Gründen der Rückwärtskompatibilität zur Verfügung gestellt. Neue Applikationen zum Lesen von Barcode-Symbologien sollten stattdessen die Funktionalitäten im Kapitel Identifizierung / Barcode verwenden (siehe find_bar_codefind_bar_codeFindBarCodefind_bar_codeFindBarCodeFindBarCode).

Signatur

find_1d_bar_code_scanline(Image : CodeRegion : BarCodeDescr, GenericName, GenericValue, StopIfFound : BarcodeFound, BarCodeElements, Orientation, ScanlineNumPoints, ScanlineDecoded, ScanlinePointsRow, ScanlinePointsColumn)

Herror T_find_1d_bar_code_scanline(const Hobject Image, Hobject* CodeRegion, const Htuple BarCodeDescr, const Htuple GenericName, const Htuple GenericValue, const Htuple StopIfFound, Htuple* BarcodeFound, Htuple* BarCodeElements, Htuple* Orientation, Htuple* ScanlineNumPoints, Htuple* ScanlineDecoded, Htuple* ScanlinePointsRow, Htuple* ScanlinePointsColumn)

Herror find_1d_bar_code_scanline(Hobject Image, Hobject* CodeRegion, const HTuple& BarCodeDescr, const HTuple& GenericName, const HTuple& GenericValue, const HTuple& StopIfFound, HTuple* BarcodeFound, HTuple* BarCodeElements, HTuple* Orientation, HTuple* ScanlineNumPoints, HTuple* ScanlineDecoded, HTuple* ScanlinePointsRow, HTuple* ScanlinePointsColumn)

HRegion HImage::Find1dBarCodeScanline(const HTuple& BarCodeDescr, const HTuple& GenericName, const HTuple& GenericValue, const HTuple& StopIfFound, HTuple* BarcodeFound, HTuple* BarCodeElements, HTuple* Orientation, HTuple* ScanlineNumPoints, HTuple* ScanlineDecoded, HTuple* ScanlinePointsRow, HTuple* ScanlinePointsColumn) const

HRegion HBarCode1D::Find1dBarCodeScanline(const HImage& Image, const HTuple& GenericName, const HTuple& GenericValue, const HTuple& StopIfFound, HTuple* BarcodeFound, HTuple* BarCodeElements, HTuple* Orientation, HTuple* ScanlineNumPoints, HTuple* ScanlineDecoded, HTuple* ScanlinePointsRow, HTuple* ScanlinePointsColumn) const

void Find1dBarCodeScanline(const HObject& Image, HObject* CodeRegion, const HTuple& BarCodeDescr, const HTuple& GenericName, const HTuple& GenericValue, const HTuple& StopIfFound, HTuple* BarcodeFound, HTuple* BarCodeElements, HTuple* Orientation, HTuple* ScanlineNumPoints, HTuple* ScanlineDecoded, HTuple* ScanlinePointsRow, HTuple* ScanlinePointsColumn)

HRegion HImage::Find1dBarCodeScanline(const HTuple& BarCodeDescr, const HTuple& GenericName, const HTuple& GenericValue, const HString& StopIfFound, Hlong* BarcodeFound, HTuple* BarCodeElements, double* Orientation, HTuple* ScanlineNumPoints, HTuple* ScanlineDecoded, HTuple* ScanlinePointsRow, HTuple* ScanlinePointsColumn) const

HRegion HImage::Find1dBarCodeScanline(const HTuple& BarCodeDescr, const HString& GenericName, double GenericValue, const HString& StopIfFound, Hlong* BarcodeFound, HTuple* BarCodeElements, double* Orientation, Hlong* ScanlineNumPoints, Hlong* ScanlineDecoded, double* ScanlinePointsRow, double* ScanlinePointsColumn) const

HRegion HImage::Find1dBarCodeScanline(const HTuple& BarCodeDescr, const char* GenericName, double GenericValue, const char* StopIfFound, Hlong* BarcodeFound, HTuple* BarCodeElements, double* Orientation, Hlong* ScanlineNumPoints, Hlong* ScanlineDecoded, double* ScanlinePointsRow, double* ScanlinePointsColumn) const

void HOperatorSetX.Find1dBarCodeScanline(
[in] IHUntypedObjectX* Image, [out] IHUntypedObjectX*CodeRegion, [in] VARIANT BarCodeDescr, [in] VARIANT GenericName, [in] VARIANT GenericValue, [in] VARIANT StopIfFound, [out] VARIANT* BarcodeFound, [out] VARIANT* BarCodeElements, [out] VARIANT* Orientation, [out] VARIANT* ScanlineNumPoints, [out] VARIANT* ScanlineDecoded, [out] VARIANT* ScanlinePointsRow, [out] VARIANT* ScanlinePointsColumn)

IHRegionX* HBarCode1DX.Find1dBarCodeScanline(
[in] IHImageX* Image, [in] VARIANT BarCodeDescr, [in] VARIANT GenericName, [in] VARIANT GenericValue, [in] BSTR StopIfFound, [out] Hlong* BarcodeFound, [out] VARIANT* BarCodeElements, [out] double* Orientation, [out] VARIANT* ScanlineNumPoints, [out] VARIANT* ScanlineDecoded, [out] VARIANT* ScanlinePointsRow, [out] VARIANT* ScanlinePointsColumn)

IHRegionX* HImageX.Find1dBarCodeScanline(
[in] VARIANT BarCodeDescr, [in] VARIANT GenericName, [in] VARIANT GenericValue, [in] BSTR StopIfFound, [out] Hlong* BarcodeFound, [out] VARIANT* BarCodeElements, [out] double* Orientation, [out] VARIANT* ScanlineNumPoints, [out] VARIANT* ScanlineDecoded, [out] VARIANT* ScanlinePointsRow, [out] VARIANT* ScanlinePointsColumn)

static void HOperatorSet.Find1dBarCodeScanline(HObject image, out HObject codeRegion, HTuple barCodeDescr, HTuple genericName, HTuple genericValue, HTuple stopIfFound, out HTuple barcodeFound, out HTuple barCodeElements, out HTuple orientation, out HTuple scanlineNumPoints, out HTuple scanlineDecoded, out HTuple scanlinePointsRow, out HTuple scanlinePointsColumn)

HRegion HImage.Find1dBarCodeScanline(HTuple barCodeDescr, HTuple genericName, HTuple genericValue, string stopIfFound, out int barcodeFound, out HTuple barCodeElements, out double orientation, out HTuple scanlineNumPoints, out HTuple scanlineDecoded, out HTuple scanlinePointsRow, out HTuple scanlinePointsColumn)

HRegion HImage.Find1dBarCodeScanline(HTuple barCodeDescr, string genericName, double genericValue, string stopIfFound, out int barcodeFound, out HTuple barCodeElements, out double orientation, out int scanlineNumPoints, out int scanlineDecoded, out double scanlinePointsRow, out double scanlinePointsColumn)

Beschreibung

Wie find_1d_bar_codefind_1d_bar_codeFind1dBarCodefind_1d_bar_codeFind1dBarCodeFind1dBarCode, sucht auch find_1d_bar_code_scanlinefind_1d_bar_code_scanlineFind1dBarCodeScanlinefind_1d_bar_code_scanlineFind1dBarCodeScanlineFind1dBarCodeScanline einen Barcode in einem Bild, allerdings liefert find_1d_bar_code_scanlinefind_1d_bar_code_scanlineFind1dBarCodeScanlinefind_1d_bar_code_scanlineFind1dBarCodeScanlineFind1dBarCodeScanline auch noch Informationen über die verwendeten Scanlines.

Jede Scanlines wird durch eine Menge von Punkten representiert. Die Zeilen- und Spaltenkoordinaten dieser Punkte werden in ScanlinePointsRowScanlinePointsRowScanlinePointsRowScanlinePointsRowScanlinePointsRowscanlinePointsRow, bzw. in ScanlinePointsColumnScanlinePointsColumnScanlinePointsColumnScanlinePointsColumnScanlinePointsColumnscanlinePointsColumn zurückgeliefert. Diese Parameter sind Tuple; sie beinhalten die Punkte aller Scanlines. Um auf die Punkte einer bestimmten Scanline zugreifen zu können, wird die Anzahl der Punkte für jede Scanline im Tuple ScanlineNumPointsScanlineNumPointsScanlineNumPointsScanlineNumPointsScanlineNumPointsscanlineNumPoints zurückgeliefert. Das Tuple ScanlineDecodedScanlineDecodedScanlineDecodedScanlineDecodedScanlineDecodedscanlineDecoded informiert darüber, ob der Barcode mit ihr dekodiert werden konnte. Eine 0 wird zurück gegeben, wenn der Barcode mit dieser Scanline nicht dekodiert werden konnte, ansonsten eine 1 oder eine 2, abhänging davon welche Methode zur Dedektion der Kanten verwendet wurde. Im Allgemeinen wird eine 1 zurückgegeben, für dünne Linien eine 2. Falls StopIfFoundStopIfFoundStopIfFoundStopIfFoundStopIfFoundstopIfFound = 'true'"true""true""true""true""true", wird der Operator verlassen sobald der Barcode dekodiert werden konnte, ansonsten werden alle Scanlines überprüft.

Eine Beschreibung der anderen Parameter findet man bei find_1d_bar_codefind_1d_bar_codeFind1dBarCodefind_1d_bar_codeFind1dBarCodeFind1dBarCode.

Parallelisierung

Parameter

ImageImageImageImageImageimage (input_object)  singlechannelimage objectHImageHImageHImageHImageXHobject (byte / uint2)

Bild, das Barcode enthält.

CodeRegionCodeRegionCodeRegionCodeRegionCodeRegioncodeRegion (output_object)  region objectHRegionHRegionHRegionHRegionXHobject *

Region des Barcode.

BarCodeDescrBarCodeDescrBarCodeDescrBarCodeDescrBarCodeDescrbarCodeDescr (input_control)  barcode_1d HTupleHTupleHBarCode1D, HTupleHBarCode1DX, VARIANTHtuple (string / integer / real) (string / int / long / double) (HString / Hlong / double) (char* / Hlong / double) (BSTR / Hlong / double) (char* / Hlong / double)

Beschreibung eines Barcode-Typs

GenericNameGenericNameGenericNameGenericNameGenericNamegenericName (input_control)  attribute.name(-array) HTupleHTupleHTupleVARIANTHtuple (string) (string) (HString) (char*) (BSTR) (char*)

Namen der optionalen Steuerparameter.

Defaultwert: []

Werteliste: 'add_length_project'"add_length_project""add_length_project""add_length_project""add_length_project""add_length_project", 'amplitude_project'"amplitude_project""amplitude_project""amplitude_project""amplitude_project""amplitude_project", 'amplitude_sobel'"amplitude_sobel""amplitude_sobel""amplitude_sobel""amplitude_sobel""amplitude_sobel", 'angle_range'"angle_range""angle_range""angle_range""angle_range""angle_range", 'correct_angle'"correct_angle""correct_angle""correct_angle""correct_angle""correct_angle", 'dilation_factor'"dilation_factor""dilation_factor""dilation_factor""dilation_factor""dilation_factor", 'interpolation_project'"interpolation_project""interpolation_project""interpolation_project""interpolation_project""interpolation_project", 'max_extra_elements'"max_extra_elements""max_extra_elements""max_extra_elements""max_extra_elements""max_extra_elements", 'max_size_element'"max_size_element""max_size_element""max_size_element""max_size_element""max_size_element", 'min_size_element'"min_size_element""min_size_element""min_size_element""min_size_element""min_size_element", 'num_scanlines'"num_scanlines""num_scanlines""num_scanlines""num_scanlines""num_scanlines", 'sigma_project'"sigma_project""sigma_project""sigma_project""sigma_project""sigma_project", 'sum_angles'"sum_angles""sum_angles""sum_angles""sum_angles""sum_angles", 'width_project'"width_project""width_project""width_project""width_project""width_project"

GenericValueGenericValueGenericValueGenericValueGenericValuegenericValue (input_control)  attribute.value(-array) HTupleHTupleHTupleVARIANTHtuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong) (double / Hlong) (double / Hlong)

Wert der optionalen Steuerparameter.

Defaultwert: []

StopIfFoundStopIfFoundStopIfFoundStopIfFoundStopIfFoundstopIfFound (input_control)  string HTupleHTupleHTupleVARIANTHtuple (string) (string) (HString) (char*) (BSTR) (char*)

Verlasse Operator sobald der Barcode decodiert wurde?.

Defaultwert: 'false' "false" "false" "false" "false" "false"

Werteliste: 'false'"false""false""false""false""false", 'true'"true""true""true""true""true"

BarcodeFoundBarcodeFoundBarcodeFoundBarcodeFoundBarcodeFoundbarcodeFound (output_control)  integer HTupleHTupleHTupleVARIANTHtuple (integer) (int / long) (Hlong) (Hlong) (Hlong) (Hlong)

Information ob der Barcode gefunden wurde.

Werteliste: 0, 1

BarCodeElementsBarCodeElementsBarCodeElementsBarCodeElementsBarCodeElementsbarCodeElements (output_control)  number-array HTupleHTupleHTupleVARIANTHtuple (real) (double) (double) (double) (double) (double)

Breiten der Elemente.

OrientationOrientationOrientationOrientationOrientationorientation (output_control)  angle.rad HTupleHTupleHTupleVARIANTHtuple (real) (double) (double) (double) (double) (double)

Orientierung des Barcodes.

ScanlineNumPointsScanlineNumPointsScanlineNumPointsScanlineNumPointsScanlineNumPointsscanlineNumPoints (output_control)  number(-array) HTupleHTupleHTupleVARIANTHtuple (integer) (int / long) (Hlong) (Hlong) (Hlong) (Hlong)

Anzahl der zur Scanline gehörenden Punkte.

ScanlineDecodedScanlineDecodedScanlineDecodedScanlineDecodedScanlineDecodedscanlineDecoded (output_control)  integer(-array) HTupleHTupleHTupleVARIANTHtuple (integer) (int / long) (Hlong) (Hlong) (Hlong) (Hlong)

Information ob der Barcode mit der Scanline dekodiert werden konnte.

Werteliste: 0, 1, 2

ScanlinePointsRowScanlinePointsRowScanlinePointsRowScanlinePointsRowScanlinePointsRowscanlinePointsRow (output_control)  real(-array) HTupleHTupleHTupleVARIANTHtuple (real) (double) (double) (double) (double) (double)

Zeilenkoordinaten der Punkte der Scanline.

ScanlinePointsColumnScanlinePointsColumnScanlinePointsColumnScanlinePointsColumnScanlinePointsColumnscanlinePointsColumn (output_control)  real(-array) HTupleHTupleHTupleVARIANTHtuple (real) (double) (double) (double) (double) (double)

Spaltenkoordinaten der Punkte der Scanline.

Beispiel (C++ (HALCON 5.0-10.0))

HTuple   empty;   // empty list of values
HTuple   BarCodeDescr;
HTuple   BarcodeFound,Elements,Orientation;
HTuple   Characters,Reference,IsCorrect;
Hobject  Image,CodeRegion;
HTuple   ScanlineNumPoints, ScanlineDecoded, ScanlinePointsRow,
         ScanlinePointsColumn;
HTuple   NumScanlines, NumPoints;
HTuple   j, k, indexPoint, nStart, nEnd;
HTuple   WindowHandle;

gen_1d_bar_code_descr("EAN 13",13,13,&BarCodeDescr);
find_1d_bar_code_scanline(Image,&CodeRegion,BarCodeDescr,empty,empty,
                 "false",&BarcodeFound,&Elements,&Orientation,
                 &ScanlineNumPoints,&ScanlineDecoded,
                 &ScanlinePointsRow,&ScanlinePointsColumn);
set_window_attr("background_color",HTuple("black"));
open_window(HTuple(0),HTuple(0),HTuple(512),HTuple(512),0,"","",
            &WindowHandle);

if (BarcodeFound[0].l)
{
  decode_1d_bar_code(Elements,BarCodeDescr,
                     &Characters,&Reference,&IsCorrect);
  if (IsCorrect[0].l)
    for (int i=0; i<Characters.Num(); i++)
    {
      char *value = Characters[i];
    }
  // display scanlines
  NumScanlines = ScanlineNum.Num();
  indexPoint = HTuple(0);
  for (j=0; j<=NumScanlines-1; j+=1)
  {
    if (HTuple(ScanlineDecoded[(Hlong)(j)[0]])==1)
    {
      set_color(WindowHandle,HTuple("green"));
    }
    else
    {
      set_color(WindowHandle,HTuple("red"));
    }
    NumPoints = HTuple(ScanlineNumPoints[(Hlong)(j)[0]]);
    nStart = indexPoint;
    nEnd = (indexPoint+NumPoints)-1;
    for (k=nStart; k<=nEnd; k+=1)
    {
      disp_circle(WindowHandle,HTuple(ScanlinePointsRow[(Hlong)(k)[0]]),
      HTuple(ScanlinePointsColumn[(Hlong)(k)[0]]),HTuple(1));
    }
    indexPoint = nEnd+1;
  }
}

Ergebnis

find_1d_bar_code_scanlinefind_1d_bar_code_scanlineFind1dBarCodeScanlinefind_1d_bar_code_scanlineFind1dBarCodeScanlineFind1dBarCodeScanline liefert den Wert 2 (H_MSG_TRUE), sofern die die Parameter korrekt sind.

Modul

Bar Code


KlassenKlassenKlassenKlassen | | | | Operatoren