decode_bar_code_rectangle2T_decode_bar_code_rectangle2DecodeBarCodeRectangle2DecodeBarCodeRectangle2 (Operator)

Name

decode_bar_code_rectangle2T_decode_bar_code_rectangle2DecodeBarCodeRectangle2DecodeBarCodeRectangle2 — Lesen von Barcode-Symbolen innerhalb eines Rechtecks.

Signatur

decode_bar_code_rectangle2(Image : : BarCodeHandle, CodeType, Row, Column, Phi, Length1, Length2 : DecodedDataStrings)

Herror T_decode_bar_code_rectangle2(const Hobject Image, const Htuple BarCodeHandle, const Htuple CodeType, const Htuple Row, const Htuple Column, const Htuple Phi, const Htuple Length1, const Htuple Length2, Htuple* DecodedDataStrings)

void DecodeBarCodeRectangle2(const HObject& Image, const HTuple& BarCodeHandle, const HTuple& CodeType, const HTuple& Row, const HTuple& Column, const HTuple& Phi, const HTuple& Length1, const HTuple& Length2, HTuple* DecodedDataStrings)

HTuple HBarCode::DecodeBarCodeRectangle2(const HImage& Image, const HTuple& CodeType, const HTuple& Row, const HTuple& Column, const HTuple& Phi, const HTuple& Length1, const HTuple& Length2) const

HString HBarCode::DecodeBarCodeRectangle2(const HImage& Image, const HString& CodeType, double Row, double Column, double Phi, double Length1, double Length2) const

HString HBarCode::DecodeBarCodeRectangle2(const HImage& Image, const char* CodeType, double Row, double Column, double Phi, double Length1, double Length2) const

HString HBarCode::DecodeBarCodeRectangle2(const HImage& Image, const wchar_t* CodeType, double Row, double Column, double Phi, double Length1, double Length2) const   (Nur Windows)

HTuple HImage::DecodeBarCodeRectangle2(const HBarCode& BarCodeHandle, const HTuple& CodeType, const HTuple& Row, const HTuple& Column, const HTuple& Phi, const HTuple& Length1, const HTuple& Length2) const

HString HImage::DecodeBarCodeRectangle2(const HBarCode& BarCodeHandle, const HString& CodeType, double Row, double Column, double Phi, double Length1, double Length2) const

HString HImage::DecodeBarCodeRectangle2(const HBarCode& BarCodeHandle, const char* CodeType, double Row, double Column, double Phi, double Length1, double Length2) const

HString HImage::DecodeBarCodeRectangle2(const HBarCode& BarCodeHandle, const wchar_t* CodeType, double Row, double Column, double Phi, double Length1, double Length2) const   (Nur Windows)

static void HOperatorSet.DecodeBarCodeRectangle2(HObject image, HTuple barCodeHandle, HTuple codeType, HTuple row, HTuple column, HTuple phi, HTuple length1, HTuple length2, out HTuple decodedDataStrings)

HTuple HBarCode.DecodeBarCodeRectangle2(HImage image, HTuple codeType, HTuple row, HTuple column, HTuple phi, HTuple length1, HTuple length2)

string HBarCode.DecodeBarCodeRectangle2(HImage image, string codeType, double row, double column, double phi, double length1, double length2)

HTuple HImage.DecodeBarCodeRectangle2(HBarCode barCodeHandle, HTuple codeType, HTuple row, HTuple column, HTuple phi, HTuple length1, HTuple length2)

string HImage.DecodeBarCodeRectangle2(HBarCode barCodeHandle, string codeType, double row, double column, double phi, double length1, double length2)

Beschreibung

Der Operator decode_bar_code_rectangle2decode_bar_code_rectangle2DecodeBarCodeRectangle2DecodeBarCodeRectangle2DecodeBarCodeRectangle2 benutzt das durch BarCodeHandleBarCodeHandleBarCodeHandleBarCodeHandlebarCodeHandle angegebene Barcode-Modell um einen Barcode an einer vorgegebenen Position innerhalb des Bildes ImageImageImageImageimage zu dekodieren. BarCodeHandleBarCodeHandleBarCodeHandleBarCodeHandlebarCodeHandle muss mit create_bar_code_modelcreate_bar_code_modelCreateBarCodeModelCreateBarCodeModelCreateBarCodeModel erstellt worden sein. Dessen Parameter können mit set_bar_code_paramset_bar_code_paramSetBarCodeParamSetBarCodeParamSetBarCodeParam gesetzt werden. Die Position des Barcodes wird als beliebig orientiertes Rechteck übergeben. Im Gegensatz zu find_bar_codefind_bar_codeFindBarCodeFindBarCodeFindBarCode, wo der Dekodierung eine zeitaufwändige Suche nach Kandidatenregionen vorangeht, durchsucht decode_bar_code_rectangle2decode_bar_code_rectangle2DecodeBarCodeRectangle2DecodeBarCodeRectangle2DecodeBarCodeRectangle2 die übergebene Region direkt nach Barcodes. Die rechteckige Region wird definiert mit den Parametern RowRowRowRowrow und ColumnColumnColumnColumncolumn für den Schwerpunkt, PhiPhiPhiPhiphi für die Orientierung und Length1Length1Length1Length1length1 und Length2Length2Length2Length2length2 für die halbe Länge der Rechteckseiten (vergleiche gen_rectangle2gen_rectangle2GenRectangle2GenRectangle2GenRectangle2). Der Winkel PhiPhiPhiPhiphi legt auch die Leserichtung des Barcodes fest. Die Orientierung eines Barcodes ist der Winkel zwischen der Leserichtung des Barcodes und der horizontalen Bildachse. Der Winkel ist positiv bei Drehung nach links und wird wie bei gen_rectangle2gen_rectangle2GenRectangle2GenRectangle2GenRectangle2 in Bogenmaß angegeben. Dies ist entgegengesetzt zu den Operatoren get_bar_code_resultget_bar_code_resultGetBarCodeResultGetBarCodeResultGetBarCodeResult und set_bar_code_paramset_bar_code_paramSetBarCodeParamSetBarCodeParamSetBarCodeParam bei denen Winkelangaben in Grad angegeben werden. PhiPhiPhiPhiphi kann im Wertebereich von [ ] liegen. Die Leserichtung ist senkrecht zu den Kanten der einzelnen Barcodestriche. Es werden auch Barcodes mit einer Leserichtung von zurückgegeben. Mehrere Regionen zur Dekodierung können als Tupel in RowRowRowRowrow, ColumnColumnColumnColumncolumn, PhiPhiPhiPhiphi, Length1Length1Length1Length1length1 und Length2Length2Length2Length2length2 übergeben werden.

Das Rechteck sollte den Barcode und die Ruhezonen vollständig überdecken. Zu groß gewählte Regionen werden dekodiert, falls in dieser Region keine störenden Muster auftauchen und die Höhe (Length2Length2Length2Length2length2) klein genug ist, dass die Scanlinien genügend dicht gelegt werden können. Rechtecke, die in Leserichtung (Length1Length1Length1Length1length1) zu kurz gewählt sind, können nicht dekodiert werden.

decode_bar_code_rectangle2decode_bar_code_rectangle2DecodeBarCodeRectangle2DecodeBarCodeRectangle2DecodeBarCodeRectangle2 kann dann verwendet werden, wenn die Position des Barcodes bereits im Voraus bekannt ist. Beispielsweise könnten durch find_bar_codefind_bar_codeFindBarCodeFindBarCodeFindBarCode und get_bar_code_objectget_bar_code_objectGetBarCodeObjectGetBarCodeObjectGetBarCodeObject bereits Kandidatenregionen für Barcodes vorliegen (siehe folgendes Beispiel).

Für den Parameter CodeTypeCodeTypeCodeTypeCodeTypecodeType können mehrere Barcode-Typen angegeben werden, vergleiche Abschnitt Autodiskriminierung für find_bar_codefind_bar_codeFindBarCodeFindBarCodeFindBarCode.

Die weiteren Aspekte der tatsächlichen Dekodierung werden bei dem Operator find_bar_codefind_bar_codeFindBarCodeFindBarCodeFindBarCode beschrieben.

Ausführungsinformationen

Dieser Operator modifiziert den Zustand des folgenden Eingabeparameters:

Während der Ausführung dieses Operators muss der Zugriff auf den Wert dieses Parameters synchronisiert werden, wenn er über mehrere Threads hinweg verwendet wird.

Parameter

ImageImageImageImageimage (input_object)  singlechannelimage objectHImageHImageHobject (byte / uint2)

Eingabebild.

BarCodeHandleBarCodeHandleBarCodeHandleBarCodeHandlebarCodeHandle (input_control, Zustand wird modifiziert)  barcode HBarCode, HTupleHTupleHtuple (handle) (IntPtr) (HHandle) (handle)

Handle des zu verwendenden Barcode-Modells.

CodeTypeCodeTypeCodeTypeCodeTypecodeType (input_control)  string(-array) HTupleHTupleHtuple (string) (string) (HString) (char*)

Typ des zu findenden Barcodes.

Defaultwert: 'EAN-13' "EAN-13" "EAN-13" "EAN-13" "EAN-13"

Werteliste: '2/5 Industrial'"2/5 Industrial""2/5 Industrial""2/5 Industrial""2/5 Industrial", '2/5 Interleaved'"2/5 Interleaved""2/5 Interleaved""2/5 Interleaved""2/5 Interleaved", 'Codabar'"Codabar""Codabar""Codabar""Codabar", 'Code 128'"Code 128""Code 128""Code 128""Code 128", 'Code 39'"Code 39""Code 39""Code 39""Code 39", 'Code 93'"Code 93""Code 93""Code 93""Code 93", 'EAN-13 Add-On 2'"EAN-13 Add-On 2""EAN-13 Add-On 2""EAN-13 Add-On 2""EAN-13 Add-On 2", 'EAN-13 Add-On 5'"EAN-13 Add-On 5""EAN-13 Add-On 5""EAN-13 Add-On 5""EAN-13 Add-On 5", 'EAN-13'"EAN-13""EAN-13""EAN-13""EAN-13", 'EAN-8 Add-On 2'"EAN-8 Add-On 2""EAN-8 Add-On 2""EAN-8 Add-On 2""EAN-8 Add-On 2", 'EAN-8 Add-On 5'"EAN-8 Add-On 5""EAN-8 Add-On 5""EAN-8 Add-On 5""EAN-8 Add-On 5", 'EAN-8'"EAN-8""EAN-8""EAN-8""EAN-8", 'GS1 DataBar Expanded Stacked'"GS1 DataBar Expanded Stacked""GS1 DataBar Expanded Stacked""GS1 DataBar Expanded Stacked""GS1 DataBar Expanded Stacked", 'GS1 DataBar Expanded'"GS1 DataBar Expanded""GS1 DataBar Expanded""GS1 DataBar Expanded""GS1 DataBar Expanded", 'GS1 DataBar Limited'"GS1 DataBar Limited""GS1 DataBar Limited""GS1 DataBar Limited""GS1 DataBar Limited", 'GS1 DataBar Omnidir'"GS1 DataBar Omnidir""GS1 DataBar Omnidir""GS1 DataBar Omnidir""GS1 DataBar Omnidir", 'GS1 DataBar Stacked Omnidir'"GS1 DataBar Stacked Omnidir""GS1 DataBar Stacked Omnidir""GS1 DataBar Stacked Omnidir""GS1 DataBar Stacked Omnidir", 'GS1 DataBar Stacked'"GS1 DataBar Stacked""GS1 DataBar Stacked""GS1 DataBar Stacked""GS1 DataBar Stacked", 'GS1 DataBar Truncated'"GS1 DataBar Truncated""GS1 DataBar Truncated""GS1 DataBar Truncated""GS1 DataBar Truncated", 'GS1-128'"GS1-128""GS1-128""GS1-128""GS1-128", 'MSI'"MSI""MSI""MSI""MSI", 'PharmaCode'"PharmaCode""PharmaCode""PharmaCode""PharmaCode", 'UPC-A Add-On 2'"UPC-A Add-On 2""UPC-A Add-On 2""UPC-A Add-On 2""UPC-A Add-On 2", 'UPC-A Add-On 5'"UPC-A Add-On 5""UPC-A Add-On 5""UPC-A Add-On 5""UPC-A Add-On 5", 'UPC-A'"UPC-A""UPC-A""UPC-A""UPC-A", 'UPC-E Add-On 2'"UPC-E Add-On 2""UPC-E Add-On 2""UPC-E Add-On 2""UPC-E Add-On 2", 'UPC-E Add-On 5'"UPC-E Add-On 5""UPC-E Add-On 5""UPC-E Add-On 5""UPC-E Add-On 5", 'UPC-E'"UPC-E""UPC-E""UPC-E""UPC-E", 'auto'"auto""auto""auto""auto"

RowRowRowRowrow (input_control)  rectangle2.center.y(-array) HTupleHTupleHtuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong)

Zeilenindex des Schwerpunktes.

Defaultwert: 50.0

ColumnColumnColumnColumncolumn (input_control)  rectangle2.center.x(-array) HTupleHTupleHtuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong)

Spaltenindex des Schwerpunktes.

Defaultwert: 100.0

PhiPhiPhiPhiphi (input_control)  rectangle2.angle.rad(-array) HTupleHTupleHtuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong)

Orientierung des Rechtecks in Bogenmaß.

Defaultwert: 0.0

Wertevorschläge: 0.0, 0.785398, 1.570796, 3.1415926

Length1Length1Length1Length1length1 (input_control)  rectangle2.hwidth(-array) HTupleHTupleHtuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong)

Hälfte der Seitenlänge des Rechtecks entlang der Leserichtung des Barcodes

Defaultwert: 200.0

Length2Length2Length2Length2length2 (input_control)  rectangle2.hheight(-array) HTupleHTupleHtuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong)

Hälfte der Seitenlänge des Rechtecks senkrecht zur Leserichtung des Barcodes.

Defaultwert: 100.0

DecodedDataStringsDecodedDataStringsDecodedDataStringsDecodedDataStringsdecodedDataStrings (output_control)  string(-array) HTupleHTupleHtuple (string) (string) (HString) (char*)

Die Datenstrings der erfolgreich dekodierten Barcodes.

Beispiel (HDevelop)

read_image (Image, 'barcode/ean13/ean1301.png')
create_bar_code_model ([], [], BHandle)
find_bar_code (Image, SymReg, BHandle, '2/5 Industrial', Dec)
if (|Dec| == 0)
*     A 2/5 Industrial code wasn't found. Try decoding an EAN-13 code.
    get_bar_code_object (CandReg, BHandle, 'all', 'candidate_regions')
    smallest_rectangle2 (CandReg, R, C, Phi, L1, L2)
    decode_bar_code_rectangle2 (Image, BHandle, 'EAN-13', R, C, Phi, \
                                L1, L2, Dec)
endif

Ergebnis

decode_bar_code_rectangle2decode_bar_code_rectangle2DecodeBarCodeRectangle2DecodeBarCodeRectangle2DecodeBarCodeRectangle2 liefert den Wert 2 (H_MSG_TRUE), falls die übergebenen Parameter korrekt sind. Ansonsten wird eine Fehlerbehandlung durchgeführt.

Vorgänger

create_bar_code_modelcreate_bar_code_modelCreateBarCodeModelCreateBarCodeModelCreateBarCodeModel, set_bar_code_paramset_bar_code_paramSetBarCodeParamSetBarCodeParamSetBarCodeParam, smallest_rectangle2smallest_rectangle2SmallestRectangle2SmallestRectangle2SmallestRectangle2

Nachfolger

get_bar_code_resultget_bar_code_resultGetBarCodeResultGetBarCodeResultGetBarCodeResult, get_bar_code_objectget_bar_code_objectGetBarCodeObjectGetBarCodeObjectGetBarCodeObject, clear_bar_code_modelclear_bar_code_modelClearBarCodeModelClearBarCodeModelClearBarCodeModel

Alternativen

find_bar_codefind_bar_codeFindBarCodeFindBarCodeFindBarCode

Siehe auch

gen_rectangle2gen_rectangle2GenRectangle2GenRectangle2GenRectangle2

Modul

Bar Code