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).
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)
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.
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).
- Multithreading-Typ: reentrant (läuft parallel zu nicht-exklusiven Operatoren).
- Multithreading-Bereich: global (kann von jedem Thread aufgerufen werden).
- Wird ohne Parallelisierung verarbeitet.
Region, die einen Barcode enthalten könnte.
Beschreibung der 2D-Barcodeklasse
Zusätzliche Parameter, die die Barcoderegionen
beschreiben und für die Extraktion der Datenwerte
verwendet werden können.
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"
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
Tupel mit der Dimension des extrahierten Symbols.
Bei ECC 200: Datenfeldbreite, -höhe, Symbol-Index.
Tupel mit den Datenwerten des extrahierten Symbols.
Wert > 0: logische 1, Wert < 0: logische 0,
Wert = 0: Modul nicht klassifizierbar.
Tupel mit den Zeilenpositionen der Datenelemente des
extrahierten Symbols im Bild.
Tupel mit den Spaltenpositionen der Datenwerte des
extrahierten Symbols.
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
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.
Data Code