KlassenKlassenKlassenKlassen | | | | Operatoren

get_2d_bar_code_posT_get_2d_bar_code_posGet2dBarCodePosget_2d_bar_code_posGet2dBarCodePosGet2dBarCodePos (Operator)

Name

get_2d_bar_code_posT_get_2d_bar_code_posGet2dBarCodePosget_2d_bar_code_posGet2dBarCodePosGet2dBarCodePos — Bestimmen der Datenwerte der Elemente (in ECC 200: „Module“) innerhalb einer Barcode-Region („Data Matrix Symbol“) und ihrer Positionen im Bild.

Warnung

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

Signatur

get_2d_bar_code_pos(BarCodeRegion, Image : : BarCodeDescr, CodeRegDescr, GenParamNames, GenParamValues : BarCodeDimension, BarCodeData, DataElementRow, DataElementCol)

Herror T_get_2d_bar_code_pos(const Hobject BarCodeRegion, const Hobject Image, const Htuple BarCodeDescr, const Htuple CodeRegDescr, const Htuple GenParamNames, const Htuple GenParamValues, Htuple* BarCodeDimension, Htuple* BarCodeData, Htuple* DataElementRow, Htuple* DataElementCol)

Herror get_2d_bar_code_pos(Hobject BarCodeRegion, Hobject Image, const HTuple& BarCodeDescr, const HTuple& CodeRegDescr, const HTuple& GenParamNames, const HTuple& GenParamValues, HTuple* BarCodeDimension, HTuple* BarCodeData, HTuple* DataElementRow, HTuple* DataElementCol)

HTuple HRegion::Get2dBarCodePos(const HImage& Image, const HTuple& BarCodeDescr, const HTuple& CodeRegDescr, const HTuple& GenParamNames, const HTuple& GenParamValues, HTuple* BarCodeData, HTuple* DataElementRow, HTuple* DataElementCol) const

HTuple HBarCode2D::Get2dBarCodePos(const HRegion& BarCodeRegion, const HImage& Image, const HTuple& CodeRegDescr, const HTuple& GenParamNames, const HTuple& GenParamValues, HTuple* BarCodeData, HTuple* DataElementRow, HTuple* DataElementCol) const

void Get2dBarCodePos(const HObject& BarCodeRegion, const HObject& Image, const HTuple& BarCodeDescr, const HTuple& CodeRegDescr, const HTuple& GenParamNames, const HTuple& GenParamValues, HTuple* BarCodeDimension, HTuple* BarCodeData, HTuple* DataElementRow, HTuple* DataElementCol)

HTuple HImage::Get2dBarCodePos(const HRegion& BarCodeRegion, const HTuple& BarCodeDescr, const HTuple& CodeRegDescr, const HTuple& GenParamNames, const HTuple& GenParamValues, HTuple* BarCodeData, HTuple* DataElementRow, HTuple* DataElementCol) const

HTuple HRegion::Get2dBarCodePos(const HImage& Image, const HTuple& BarCodeDescr, const HTuple& CodeRegDescr, const HTuple& GenParamNames, const HTuple& GenParamValues, HTuple* BarCodeData, HTuple* DataElementRow, HTuple* DataElementCol) const

void HOperatorSetX.Get2dBarCodePos(
[in] IHUntypedObjectX* BarCodeRegion, [in] IHUntypedObjectX* Image, [in] VARIANT BarCodeDescr, [in] VARIANT CodeRegDescr, [in] VARIANT GenParamNames, [in] VARIANT GenParamValues, [out] VARIANT* BarCodeDimension, [out] VARIANT* BarCodeData, [out] VARIANT* DataElementRow, [out] VARIANT* DataElementCol)

VARIANT HBarCode2DX.Get2dBarCodePos(
[in] IHRegionX* BarCodeRegion, [in] IHImageX* Image, [in] VARIANT BarCodeDescr, [in] VARIANT CodeRegDescr, [in] VARIANT GenParamNames, [in] VARIANT GenParamValues, [out] VARIANT* BarCodeData, [out] VARIANT* DataElementRow, [out] VARIANT* DataElementCol)

VARIANT HImageX.Get2dBarCodePos(
[in] IHRegionX* BarCodeRegion, [in] VARIANT BarCodeDescr, [in] VARIANT CodeRegDescr, [in] VARIANT GenParamNames, [in] VARIANT GenParamValues, [out] VARIANT* BarCodeData, [out] VARIANT* DataElementRow, [out] VARIANT* DataElementCol)

VARIANT HRegionX.Get2dBarCodePos(
[in] IHImageX* Image, [in] VARIANT BarCodeDescr, [in] VARIANT CodeRegDescr, [in] VARIANT GenParamNames, [in] VARIANT GenParamValues, [out] VARIANT* BarCodeData, [out] VARIANT* DataElementRow, [out] VARIANT* DataElementCol)

static void HOperatorSet.Get2dBarCodePos(HObject barCodeRegion, HObject image, HTuple barCodeDescr, HTuple codeRegDescr, HTuple genParamNames, HTuple genParamValues, out HTuple barCodeDimension, out HTuple barCodeData, out HTuple dataElementRow, out HTuple dataElementCol)

HTuple HImage.Get2dBarCodePos(HRegion barCodeRegion, HTuple barCodeDescr, HTuple codeRegDescr, HTuple genParamNames, HTuple genParamValues, out HTuple barCodeData, out HTuple dataElementRow, out HTuple dataElementCol)

HTuple HRegion.Get2dBarCodePos(HImage image, HTuple barCodeDescr, HTuple codeRegDescr, HTuple genParamNames, HTuple genParamValues, out HTuple barCodeData, out HTuple dataElementRow, out HTuple dataElementCol)

Beschreibung

get_2d_bar_code_posget_2d_bar_code_posGet2dBarCodePosget_2d_bar_code_posGet2dBarCodePosGet2dBarCodePos extrahiert aus einem Symbolkandidaten BarCodeRegionBarCodeRegionBarCodeRegionBarCodeRegionBarCodeRegionbarCodeRegion und den dazugehörigen Grauwerten ImageImageImageImageImageimage die einzelnen Datenwerte (Bit gesetzt oder nicht). Im Gegensatz zu get_2d_bar_codeget_2d_bar_codeGet2dBarCodeget_2d_bar_codeGet2dBarCodeGet2dBarCode werden zusätzlich die Positionen der einzelnen Datenelemente im Bild in den Parametern DataElementRowDataElementRowDataElementRowDataElementRowDataElementRowdataElementRow und DataElementColDataElementColDataElementColDataElementColDataElementColdataElementCol zurück geliefert. Diese können dann zur Kontrolle der Funktion des Operators zum Einzeichnen der Daten in das Ausgangsbild verwendet werden. Für die Beschreibung der anderen Parameter siehe get_2d_bar_codeget_2d_bar_codeGet2dBarCodeget_2d_bar_codeGet2dBarCodeGet2dBarCode.

Achtung

Der Operator get_2d_bar_code_posget_2d_bar_code_posGet2dBarCodePosget_2d_bar_code_posGet2dBarCodePosGet2dBarCodePos signalisiert über den Fehlercode, dass die übergebene Region keinen gültigen Barcode enthält. Da die vom Operator find_2d_bar_codefind_2d_bar_codeFind2dBarCodefind_2d_bar_codeFind2dBarCodeFind2dBarCode extrahierten Regionenkandidaten aber durchaus Regionen ohne Barcode enthalten können, sollte jeder Aufruf von get_2d_bar_codeget_2d_bar_codeGet2dBarCodeget_2d_bar_codeGet2dBarCodeGet2dBarCode in eine eigene Fehlerbehandlung eingeschlossen werden (siehe Beispiel).

Parallelisierung

Parameter

BarCodeRegionBarCodeRegionBarCodeRegionBarCodeRegionBarCodeRegionbarCodeRegion (input_object)  region objectHRegionHRegionHRegionHRegionXHobject

Region, die einen Barcode enthalten könnte.

ImageImageImageImageImageimage (input_object)  singlechannelimage objectHImageHImageHImageHImageXHobject (byte)

Zugehöriges Bild.

BarCodeDescrBarCodeDescrBarCodeDescrBarCodeDescrBarCodeDescrbarCodeDescr (input_control)  barcode_2d HTupleHTupleHBarCode2D, HTupleHBarCode2DX, VARIANTHtuple (string / integer / real) (string / int / long / double) (HString / Hlong / double) (char* / Hlong / double) (BSTR / Hlong / double) (char* / Hlong / double)

Beschreibung der 2D-Barcodeklasse

CodeRegDescrCodeRegDescrCodeRegDescrCodeRegDescrCodeRegDescrcodeRegDescr (input_control)  string-array HTupleHTupleHTupleVARIANTHtuple (string / integer / real) (string / int / long / double) (HString / Hlong / double) (char* / Hlong / double) (BSTR / Hlong / double) (char* / Hlong / double)

Zusätzliche Parameter, die die Barcoderegionen beschreiben und für die Extraktion der Datenwerte verwendet werden können.

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

Liste von Namen (optionaler) generischer Steuerparameter.

Defaultwert: []

Werteliste: 'border_width'"border_width""border_width""border_width""border_width""border_width", 'border_width_max'"border_width_max""border_width_max""border_width_max""border_width_max""border_width_max", 'border_width_min'"border_width_min""border_width_min""border_width_min""border_width_min""border_width_min", 'enlarge_region_rad'"enlarge_region_rad""enlarge_region_rad""enlarge_region_rad""enlarge_region_rad""enlarge_region_rad", 'gray_erosion_size'"gray_erosion_size""gray_erosion_size""gray_erosion_size""gray_erosion_size""gray_erosion_size", 'max_line_dist1'"max_line_dist1""max_line_dist1""max_line_dist1""max_line_dist1""max_line_dist1", 'max_line_dist2'"max_line_dist2""max_line_dist2""max_line_dist2""max_line_dist2""max_line_dist2", 'measure_sigma'"measure_sigma""measure_sigma""measure_sigma""measure_sigma""measure_sigma", 'measure_thresh'"measure_thresh""measure_thresh""measure_thresh""measure_thresh""measure_thresh", 'median_mask_rad'"median_mask_rad""median_mask_rad""median_mask_rad""median_mask_rad""median_mask_rad", 'min_cont_len'"min_cont_len""min_cont_len""min_cont_len""min_cont_len""min_cont_len", 'module_rad_ratio'"module_rad_ratio""module_rad_ratio""module_rad_ratio""module_rad_ratio""module_rad_ratio", 'smooth_cont'"smooth_cont""smooth_cont""smooth_cont""smooth_cont""smooth_cont", 'thresh_percent'"thresh_percent""thresh_percent""thresh_percent""thresh_percent""thresh_percent", 'thresh_step_width'"thresh_step_width""thresh_step_width""thresh_step_width""thresh_step_width""thresh_step_width", 'use_grayval_max'"use_grayval_max""use_grayval_max""use_grayval_max""use_grayval_max""use_grayval_max", 'use_grayval_min'"use_grayval_min""use_grayval_min""use_grayval_min""use_grayval_min""use_grayval_min", 'use_grayval_range'"use_grayval_range""use_grayval_range""use_grayval_range""use_grayval_range""use_grayval_range", 'use_grayvals'"use_grayvals""use_grayvals""use_grayvals""use_grayvals""use_grayvals"

GenParamValuesGenParamValuesGenParamValuesGenParamValuesGenParamValuesgenParamValues (input_control)  attribute.value-array HTupleHTupleHTupleVARIANTHtuple (real / integer / string) (double / int / long / string) (double / Hlong / HString) (double / Hlong / char*) (double / Hlong / BSTR) (double / Hlong / char*)

Liste der Werte der generischen Steuerparameter.

Defaultwert: []

Wertevorschläge: 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0, 'yes'"yes""yes""yes""yes""yes", 'no'"no""no""no""no""no", -1, 1.5, 2.5, 3.5, 4.5, 5.5, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 20, 30, 40, 50

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

Tupel mit der Dimension des extrahierten Symbols. Bei ECC 200: Datenfeldbreite, -höhe, Symbol-Index.

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

Tupel mit den Datenwerten des extrahierten Symbols. Wert > 0: logische 1, Wert < 0: logische 0, Wert = 0: Modul nicht klassifizierbar.

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

Tupel mit den Zeilenpositionen der Datenelemente des extrahierten Symbols im Bild.

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

Tupel mit den Spaltenpositionen der Datenwerte des extrahierten Symbols.

Beispiel (HDevelop)

dev_set_check ('~give_error')
get_2d_bar_code_pos (ObjectSelected, Image, BarCodeDescr, \
                     CodeRegDescr, [], [], BarCodeDimension, BarCodeData, \
                     DataElementRow, DataElementCol)
err := ErrorCode
dev_set_check ('give_error')
if (err = 2)
  idx := 0
  dev_update_pc ('off')
  dev_update_time ('off')
  dev_update_var ('off')
  for m := 0 to BarCodeDimension[0]-1 by 1
    for n := 0 to BarCodeDimension[1]-1 by 1
      if (BarCodeData[idx]>0)
        set_color (WindowHandle, 'green')
      else
        if (BarCodeData[idx]<0)
          set_color (WindowHandle, 'red')
        else
          set_color (WindowHandle, 'blue')
        endif
      endif
      disp_circle (WindowHandle, DataElementRow[idx], \
                   DataElementCol[idx], 1)
      idx := idx+1
    endfor
  endfor
  dev_update_pc ('on')
  dev_update_time ('on')
  dev_update_var ('on')
  decode_2d_bar_code (BarCodeDescr, BarCodeDimension, BarCodeData, \
                      SymbolCharacters, CorrSymbolData, DecodedData, \
                      DecodingError, StructuredAppend)
endif

Ergebnis

Der Operator get_2d_bar_code_posget_2d_bar_code_posGet2dBarCodePosget_2d_bar_code_posGet2dBarCodePosGet2dBarCodePos signalisiert über den Fehlercode sowohl, dass inkorrekte Parameter übergeben wurden als auch, dass die Extraktion eines Barcodes aus der übergebenen Region aus bestimmten Gründen scheiterte. Konnte z.B. kein umschließendes Viereck um die Region bestimmt werden, wird der Operator mit dem Fehlercode 8808 abgebrochen. Liegt das Viereck z.T. außerhalb des Bildes, wird mit dem Fehlercode 8807 abgebrochen. Wurde innerhalb des Randbereichs kein Suchmuster gefunden, wird der Operator mit dem Fehlercode 8810 abgebrochen. Wird dagegen der durchgezogener Symbolrand an zwei aneinanderstoßenden Seiten ('L') nicht gefunden, wird mit dem Fehlercode 8809 abgebrochen. Kann bei der Druckmethode 'engraved_darkfield'"engraved_darkfield""engraved_darkfield""engraved_darkfield""engraved_darkfield""engraved_darkfield" keines der Grauwertmerkmale die Testregionen trennen, bricht der Operator mit dem Fehlercode 8811 ab.

Modul

Data Code


KlassenKlassenKlassenKlassen | | | | Operatoren