RepData
typedef struct RepData_tag {
ReInit init;
ReParm parm;
ReImage image;
long busy;
INT_PTR hWND_rep_finished;
INT_PTR hWND_line_message;
long filler1;
KADMOS_ERROR (KADMOS_API *rec_hook)(RecData *);
KADMOS_ERROR (KADMOS_API *rel_hook)(RelData *);
short rep_deskew;
short rep_result_len;
RepResult *rep_result;
} RepData;
Elemente:
init
- Aktiviert einen Klassifikators und ist vor
rep_init() zu setzen.
parm
- Die Arbeit des Moduls
REP kann mit einer Vielzahl von Parametern gesteuert werden. Diese
Parameter sind in einer Struktur ReParm zusammengefasst. Eine solche Struktur ist nun Bestandteil der für
den Aufruf des Moduls benötigten Datenstruktur RepData.
image
- Unter dieser Struktur
ReImage wird das zu erkennende oder anderweitig zu bearbeitende Bild
erwartet oder geliefert.
busy
- Hier wird angezeigt, ob die Erkennung noch in Arbeit (1) oder bereits abgeschlossen ist (0). Dies ist
insbesondere bei Parallelrechnern oder bei simultan arbeitenden Zusatzkarten für die Erkennung von Bedeutung.
hWND_rep_finished
- Dieser Parameter hat nur für Windows Bedeutung. Ist er besetzt, so sendet
rep_do() Messages
an jenes Window, dessen Handle durch diesen Wert beschrieben ist. Sobald die Vorverarbeitung einer Zeile abgeschlossen ist,
setzt rep_do() folgenden Aufruf ab:
SendMessage((HWND) rep->hWND_rep_finished, WM_USER,
(WPARAM)(REP_MESSAGE | REX_IMGREADY), (LPARAM) rep);
Dadurch kann vor der Erkennung auf das Resultat der Bildvorverarbeitung (rep->image) zugegriffen werden. Der
Pointer wird für diesen Aufruf auf das interne vorverarbeitete Bild umgesetzt. Sobald die Erkennung einer Textseite
abgeschlossen ist, setzt rep_do() folgenden Aufruf ab:
SendMessage((HWND) rep->hWND_rep_finished,WM_USER,
(WPARAM)(REP_MESSAGE | REX_FINISHED), (LPARAM) rep);
Im Fehlerfall enthält wParm noch das Bit REX_ERROR.
hWND_line_message
- Dieser Parameter hat nur für Windows Bedeutung. Ist er besetzt, so sendet
rep_do() Messages
an jenes Window, dessen Handle durch diesen Wert beschrieben ist. Sobald die Textzeilen isoliert sind, setzt
rep_do() folgenden Aufruf ab:
SendMessage((HWND) rep->hWND_line_message, WM_USER,
(WPARAM) REP_LINE_CNT,(LPARAM) zeilenanzahl);
Nach der Erkennung jeder einzelnen Textzeile wird folgender Aufruf abgesetzt:
SendMessage((HWND) rep->hWND_line_message, WM_USER,
(WPARAM) REP_RESULT,(LPARAM) &rep_result);
Unter der in lParam übergebenen Adresse können alle Einzelresultate dieser Textzeile abgeholt werden.
Die Adresse zeigt als Pointer auf eine Struktur Rep_Result. REP_LINE_CNT und
REP_RESULT sind wie folgt vereinbart:
#define REP_LINE_CNT 1
#define REP_RESULT 2
filler1
- 8 Byte Alignment.
rec_hook
- Hier kann eine eigene Funktion angegeben werden die der vorgeschriebenen Deklaration genügt.
Die Module
REP und REL rufen nach erfolgter Zeilen- und Zeichensegmentierung letztendlich stets
die Funktion rec_do() des Moduls REC mit einer zugehörigen Struktur RecData auf.
Ist bei rec_hook eine Funktion eingetragen, so wird diese unmittelbar nach jedem dieser
rec_do()-Aufrufe mit der zugehörigen RecData-Struktur ausgeführt. Man hat dadurch eine
ganze Reihe von Möglichkeiten zur Verfolgung und sogar Steuerung der Einzelzeichen-Erkennung, zur Sammlung der
segmentierten Rasterbilder oder auch zum Abbruch der Erkennung. Es wird nämlich der Rückgabewert der Funktion
rec_hook derart ausgewertet, dass bei einem Wert verschieden von RE_SUCCESS das Modul
rel_do() seine Arbeit beendet und ebenfalls mit diesem Rückgabewert zurückkehrt. Dadurch wird auch
gegebenenfalls das Modul rep_do() seine Arbeit beenden und mit diesem Wert zurückkehren.
Will man eine derartige hook-Funktion mit eigenen Parametern versorgen, so ist hierfür der Pointer
hookparm in der Struktur ReParm vorgesehen. Hinterlegt man etwa vor einem Aufruf von
rel_do() bei hookparm eine Adresse (z.B. auf private Daten), so wird diese Adresse von
rel_do() vor jedem Aufruf von rec_do() in die zugehörige Struktur RecData
auf hookparm kopiert, wo sie von der hook-Funktion abgerufen werden kann.
rel_hook
- Sofern hier eine eigene Funktion angegeben wurde, wird diese analog zu
rec_hook bei
jedem Aufruf des Moduls rec_do() mit einer zugehörigen Struktur RelData aufgerufen.
Auch diese Funktion kann wie rec_hook zum Abbruch der Erkennung verwendet werden. rel_hook
muss der vorgeschriebenen Deklaration genügen.
rep_deskew
- Korrigierte Drehung des Bildes.
rep_result_len, rep_result
rep_result_len enthält nach dem Aufruf von rep_do() die Anzahl der
ermittelten Textzeilen des übergebenen Bildes. rep_result enthält einen Pointer auf ein Feld
von Strukturen RepResult. Diese Ergebnisstrukturen beinhalten für jede Textzeile Pointer auf die
Ergebnis von Grid, Graph, Result. Sind Grid-Elemente erkannt worden,
so verweist rep_result[0] auf eine entsprechende Datenstruktur, rep_result_len ist um 1 grösser
als die Zahl der erkannten Zeilen.
Verweise: