Files
2025-03-26 01:06:45 +08:00

349 lines
16 KiB
C

/*****************************************************************************
* CORE1.h
*****************************************************************************
*
* Project: HALCON/libhalcon
* Description: Mid level procedure interface
*
* (c) 1996-2018 by MVTec Software GmbH
* www.mvtec.com
*
*****************************************************************************
*
*
*/
#ifndef CORE1_H
#define CORE1_H
#if defined(__cplusplus)
extern "C" {
#endif
/* HPAllocStringMem - allocate memory for StringMem */
extern HLibExport Herror HPAllocStringMem(Hproc_handle proc_handle,
size_t size);
/* HFreeStringMem - give free memory of StringMem */
extern HLibExport Herror HFreeStringMem(Hproc_handle proc_handle);
/* HNoInpObj - returns TRUE, if any input object parameter is empty */
extern HLibExport Herror HNoInpObj(Hproc_handle proc_handle, HBOOL *b);
/* HPGetObj - get key of a input object */
extern HLibExport Herror HPGetObj(Hproc_handle proc_handle, HINT par_num,
INT4_8 obj_num, Hkey *key);
/* HPGetOutpObj - get key of a output object */
extern HLibExport Herror HPGetOutpObj(Hproc_handle proc_handle,
HINT par_num, INT4_8 obj_num,
Hkey *key);
/* HPGetObjNum - get number of objects of input object parameter */
extern HLibExport Herror HPGetObjNum(Hproc_handle proc_handle, HINT par_num,
INT4_8 *num);
/* HPTestObj - test, whether key specifies a valid database object */
extern HLibExport HBOOL HPTestObj( Hkey obj);
/* HPCountTuple - count number of managed data base objects */
extern HLibExport Herror HPCountTuple( char *relation, INT4_8 *num);
/* HPGetComp - get key of a component of an object */
extern HLibExport Herror HPGetComp(Hproc_handle proc_handle, Hkey obj_key,
HINT comp, Hkey *key);
/* HPGetFRL - get runlength code of a region (no copy; just pointer to data) */
extern HLibExport Herror HPGetFRL(Hproc_handle proc_handle, Hkey rl_key,
Hrlregion **region);
/* HPGetFRL - get runlength code of a region (region is copied!) */
extern HLibExport Herror HPGetRL(Hproc_handle proc_handle, Hkey rl_key,
Hrlregion *rl);
/* HPGetFDRL - get runlength code of a region (no copy; just pointer to data)*/
extern HLibExport Herror HPGetFDRL(Hproc_handle proc_handle, Hkey obj_key,
Hrlregion **rl);
/* HPGetDRL - get chord coding of a region (region gets copied!) */
extern HLibExport Herror HPGetDRL(Hproc_handle proc_handle, Hkey obj_key,
Hrlregion *rl);
/* HPGetURL - merge all regions of an object into a new one */
extern HLibExport Herror HPGetURL(Hproc_handle proc_handle, HINT par_num,
Hrlregion *region);
/* HPGetURLLocal - merge all regions of an object into a new one */
extern HLibExport Herror HPGetURLLocal(Hproc_handle proc_handle, HINT par_num,
Hrlregion **region);
/* HPGetCParNum - get number of values of input control parameter */
extern HLibExport Herror HPGetCParNum(Hproc_handle proc_handle, HINT par_num,
INT4_8 *num);
/* HPGetPPar - get array of pointers to value structures of inp. ctrl. par. */
extern HLibExport Herror HPGetPPar(Hproc_handle proc_handle, HINT par_num,
Hcpar *H_RESTRICT *val, INT4_8 *num);
/* HPGetPar - get values of input control parameter */
extern HLibExport Herror HPGetPar(Hproc_handle proc_handle,
HINT par_num, HINT kind_in, HINT *kind,
Hpar Val[], INT4_8 min, INT4_8 max,
INT4_8 *num);
/* HPGetCPar - get values of input control parameter */
extern HLibExport Herror HPGetCPar(Hproc_handle proc_handle,
HINT par_num, HINT kind_in, Hcpar Val[],
INT4_8 min, INT4_8 max, INT4_8 *num);
/* HPPutPElem - store output control parameter values by reference */
extern HLibExport Herror HPPutPElem(Hproc_handle proc_handle,
HINT parnr, void *Val, INT4_8 num,
HINT type);
/* HPPutElem - store output control parameter values by copy */
extern HLibExport Herror HPPutElem(Hproc_handle proc_handle,
HINT parnr, void const *Val, INT4_8 num,
HINT type);
/* HPPutPar - store output control parameter values */
extern HLibExport Herror HPPutPar(Hproc_handle proc_handle,
HINT par_num, HINT kind, Hpar *Elem,
INT4_8 num);
/* HPPutPPar - store output control parameter values (by using pointers) */
extern HLibExport Herror HPPutPPar(Hproc_handle proc_handle,HINT par_num,
Hcpar *Val, INT4_8 num);
/* HPPutCPar - store output control parameter values */
extern HLibExport Herror HPPutCPar(Hproc_handle proc_handle,
HINT par_num, Hcpar *Val, INT4_8 num);
/* HPPutRL - copy region into region object, return its key */
extern HLibExport Herror HPPutRL(Hproc_handle proc_handle, Hrlregion *region,
Hkey *key);
/* HPPutPRL - store region into region object, return its key */
extern HLibExport Herror HPPutPRL(Hproc_handle proc_handle, Hrlregion **region,
Hkey *key);
/* HPPutDRL - copy region into component object and return its region
* object key..*/
extern HLibExport Herror HPPutDRL(Hproc_handle proc_handle, Hkey obj_key,
Hrlregion *rl, Hkey *key);
/* HPPutPRLComp - store region into component object and return its region
* object key. */
extern HLibExport Herror HPPutPRLComp(Hproc_handle proc_handle, Hkey obj_key,
Hrlregion **reg, Hkey *key);
/* HPPutRect - insert rectangular region in output object */
extern HLibExport Herror HPPutRect(Hproc_handle proc_handle, Hkey obj,
HINT width, HINT height);
/* HPGetImage - fetch key of image object from database (including spy) */
extern HLibExport Herror HPGetImage(Hproc_handle proc_handle, Hkey key,
Himage *image);
/* HP0GetImage - fetch key of image object from database (without spy) */
extern HLibExport Herror HP0GetImage(Hproc_handle proc_handle, Hkey key,
Himage *image);
extern HLibExport Herror HPGetImageManip(Hproc_handle proc_handle, Hkey key,
Himage *image);
/* HPGetImage - fetch key of image object from database (including spy) */
extern HLibExport Herror HPGetCDImage(Hproc_handle proc_handle, Hkey key,
Himage *image);
/* HP0GetImage - fetch key of image object from database (without spy) */
extern HLibExport Herror HP0GetCDImage(Hproc_handle proc_handle, Hkey key,
Himage *image);
/* HPGetDImage - fetch gray value channel of image object (without key) */
extern HLibExport Herror HPGetDImage(Hproc_handle proc_handle, Hkey obj_key,
HINT comp, Himage *image);
/* HPDelObj - delete an object */
extern HLibExport Herror HPDelObj(Hproc_handle proc_handle, Hkey obj_key);
/* HCrIObj - create new image object */
extern HLibExport Herror HCrIObj(Hproc_handle proc_handle, Hkey *key);
/* HPCrObj - create new image object and insert it into output object list */
extern HLibExport Herror HPCrObj(Hproc_handle proc_handle, HINT par_num,
Hkey *key);
/* HPCopyIObj - copy image object */
extern HLibExport Herror HPCopyIObj(Hproc_handle proc_handle, Hkey obj_key,
Hkey *tuple);
/* HPCopyObj - copy image object and insert it into output object list */
extern HLibExport Herror HPCopyObj(Hproc_handle proc_handle, Hkey obj_key,
HINT par_num, Hkey *key);
/* HPPutImage - store image data as image object in database */
extern HLibExport Herror HPPutImage(Hproc_handle proc_handle, Himage *image,
HBOOL copy, Hkey *key);
/* HPDefObj - build up new object from already created objhects/components */
extern HLibExport Herror HPDefObj(Hproc_handle proc_handle, Hkey obj_key,
Hkey comp_key, HINT comp);
/* HPPutDImage - store image data in database and assign it to object */
extern HLibExport Herror HPPutDImage(Hproc_handle proc_handle, Hkey obj_key,
HINT comp, Himage *image, HBOOL copy,
Hkey *key);
/* HPNewRegion - create new output object with copied region */
extern HLibExport Herror HPNewRegion(Hproc_handle proc_handle,
Hrlregion *region);
/* HPPushRegion - create new output object with defined region */
extern HLibExport Herror HPPushRegion(Hproc_handle proc_handle,
Hrlregion *region);
/* HPPushGlobalRegion - create new output object with defined region */
extern HLibExport Herror HPPushGlobalRegion(Hproc_handle proc_handle,
Hrlregion *region);
/* HPDupObj - duplicate object and insert it into output object list */
extern HLibExport Herror HPDupObj(Hproc_handle proc_handle, INT4_8 obj_index);
/* HPAllSegm - loop over all components of all objects of first input par. */
extern HLibExport Herror HPAllSegm(Hproc_handle proc_handle, INT4_8 obj_index,
Hrlregion **region, Himage *images,
HINT max_channels);
/* HPAllReg - loop over all region components of all obj.s of first inp. par.*/
extern HLibExport Herror HPAllReg(Hproc_handle proc_handle, INT4_8 obj_index,
Hrlregion **region);
/* HPAllFilter - loop over all image obj.s of 1. inp. par. & create new obj.*/
extern HLibExport Herror HPAllFilter(Hproc_handle proc_handle,
INT4_8 obj_index,
Hrlregion **region, Himage *images_in,
Himage *images_out, HINT max_channels);
/* HPAllFilter2 - loop over all image obj.s of 1. inp. par. & create new obj.*/
extern HLibExport Herror HPAllFilter2(Hproc_handle proc_handle,
INT4_8 obj_index,
Hrlregion *region,Himage *images_in1,
Himage *images_in2,Himage *images_out,
HINT max_channels);
/* HPNumOfChannels - check number of channels of input object */
extern HLibExport Herror HPNumOfChannels(Hproc_handle proc_handle,
HINT par_num,
INT4_8 obj_num,HINT *chn_num);
/* HPCrXLD - create XLD object */
extern HLibExport Herror HPCrXLD(Hproc_handle proc_handle, HINT Par, VOIDP XLD,
HINT Type,Hkey *Uses, HINT NumUses,
DBFreeProc free_proc, Hkey *key);
/* HPGetXLD - fetch XLD object (in fact VOIDP* XLD) */
extern HLibExport Herror HPGetXLD(Hproc_handle proc_handle, Hkey Key,
HINT *Type, VOIDP XLD,Hkey **Uses,
HINT *NumUses);
/* HPNumOfObjChannels - return number of defined channels of an object. */
extern HLibExport Herror HPNumOfObjChannels(Hproc_handle proc_handle,
Hkey obj, HINT *chn_num);
/* HNumOfOutpObj - return number of objects of an output object parameter */
extern HLibExport Herror HNumOfOutpObj(Hproc_handle proc_handle,HINT par_num,
HINT *outp_objs);
/* HGetInputKeyByPtr - get input object key containing ptr */
extern HLibExport Herror HGetInputKeyByPtr(Hproc_handle proc_id, void *ptr,
Hkey *key);
/* HGetOutputKeyByPtr - get output object key containing ptr */
extern HLibExport Herror HGetOutputKeyByPtr(Hproc_handle proc_id, void *ptr,
Hkey *key);
/* HGetInputRegionKeyByPtr - get input object key containing ptr */
extern HLibExport Herror
HGetInputRegionKeyByPtr(Hproc_handle proc_id, Hrlregion *ptr, Hkey *key);
extern HLibExport Herror
HPAllocOutpCtrl( Hproc_handle ph, HINT par, HINT type, INT4_8 length,
void*H_RESTRICT* elem);
#define HAllocOutpCtrl(ph,par,type,length,elem) \
HPAllocOutpCtrl( ph, par, type, length, (void*H_RESTRICT*) elem)
extern HLibExport Herror
HFreeOutpCtrl( Hproc_handle ph, HINT par);
extern HLibExport Herror
HPReallocOutpCtrl( Hproc_handle ph, HINT par, HINT newtype, INT4_8 newlength,
void*H_RESTRICT* elem);
#define HReallocOutpCtrl(ph,par,type,newlength,elem) \
HPReallocOutpCtrl( ph, par, type, newlength, (void*H_RESTRICT*) elem)
extern HLibExport void
HSetNumOutpCtrl( Hproc_handle ph, HINT par, INT4_8 num);
extern HLibExport void
HPGetPElem( Hproc_handle ph, HINT par,
void const*H_RESTRICT*elem, INT4_8 *num, HINT *type) ;
/* definition of conversion flags to pass to convert slot of HPGetPElemx: */
#define CONV_NONE 0 /* no conversion;do only consider original element types*/
#define CONV_CAST 1 /* <INT4_8>=(INT4_8)<double>; <double>=(double)<INT4_8>*/
#define CONV_IDNT 2 /* convert double->INT4_8 if double has no fraction */
#define CONV_RND 3 /* <INT4_8>=(INT4_8)(<double>+0.5) */
/* direct access input ctrl arrays */
extern HLibExport Herror
HPGetPElemL( Hproc_handle ph, HINT par, HINT convert,
INT4_8 const*H_RESTRICT*elem, INT4_8 *num) ;
extern HLibExport Herror
HPGetPElemD( Hproc_handle ph, HINT par, HINT convert,
double const*H_RESTRICT*elem, INT4_8 *num) ;
extern HLibExport Herror
HPGetPElemS( Hproc_handle ph, HINT par, HINT convert,
char const* const*H_RESTRICT*elem, INT4_8 *num) ;
extern HLibExport Herror
HPGetPElemH( Hproc_handle ph, HINT par, const HHandleInfo *expected_type,
INT4_8 expected_num, void **elem, INT4_8 *num, HBOOL alloc);
/* copy variant */
extern HLibExport Herror
HPGetElemL( Hproc_handle ph, HINT par, HINT convert, HINT memtype,
INT4_8 *H_RESTRICT*elem, INT4_8 *num);
extern HLibExport Herror
HPGetElemD( Hproc_handle ph, HINT par, HINT convert, HINT memtype,
double *H_RESTRICT*elem, INT4_8 *num);
extern HLibExport Herror
HPGetElemS( Hproc_handle ph, HINT par, HINT convert, HINT memtype,
char *H_RESTRICT*H_RESTRICT *elem, INT4_8 *num);
/* copy variant with preallocated arrays */
extern HLibExport Herror
HPCopyElemL( Hproc_handle ph, HINT par, HINT convert,
INT4_8 *H_RESTRICT lelem, INT4_8 *num);
extern HLibExport Herror
HPCopyElemD( Hproc_handle ph, HINT par, HINT convert,
double *H_RESTRICT delem, INT4_8 *num);
extern HLibExport Herror
HPCopyElemF( Hproc_handle ph, HINT par, HINT convert,
float *H_RESTRICT delem, INT4_8 *num);
/* returning handles */
extern HLibExport Herror
HAllocOutputHandles( Hproc_handle ph, HINT parnr, Hphandle **elem, INT4_8 num,
const HHandleInfo *type);
extern HLibExport Herror
HXAllocOutputHandle( Hproc_handle ph, HINT parnr, void ***elem,
const HHandleInfo *type);
#if defined(__cplusplus)
}
#endif
#endif