Wenn ich cvCreateSeq mit dem Richtigen Parameter aufrufe bekomme ich einen Runtime Error.
Der "richtige" Parameter mit Namen CV_32F2 ist einfach die byte anzahl 32=4byte und das 2x wegen 2D sind 8 byte
Wenn ich cvCreateSeq mit 0 für den typ aufrufe wird flags $42990000
in meinem OpenCV_200.pas gibt es für die Bild/Matrizen/cvArr/Squenzen Magic Values
das sind
Delphi-Quellcode:
CV_MAT_MAGIC_VAL = $42420000;
CV_MATND_MAGIC_VAL = $42430000;
CV_HIST_MAGIC_VAL = $42450000;
CV_STORAGE_MAGIC_VAL = $42890000;
// dann auch
CV_SEQ_MAGIC_VAL = $42990000; // wie zu erwarten war
dann habe ich mal in den C Sourcen nach den Konstanten gesucht und bin auf das gestoßen
Delphi-Quellcode:
#define CV_SEQ_MAGIC_VAL 0x42990000
#define CV_SET_MAGIC_VAL 0x42980000
#define CV_SEQ_ELTYPE_BITS 9
#define CV_SEQ_ELTYPE_MASK ((1 << CV_SEQ_ELTYPE_BITS) - 1)
#define CV_SEQ_ELTYPE_POINT CV_32SC2
#define CV_SEQ_ELTYPE_CODE CV_8UC1
#define CV_SEQ_ELTYPE_GENERIC 0
#define CV_SEQ_ELTYPE_PTR CV_USRTYPE1
#define CV_SEQ_ELTYPE_PPOINT CV_SEQ_ELTYPE_PTR
#define CV_SEQ_ELTYPE_INDEX CV_32SC1
#define CV_SEQ_ELTYPE_GRAPH_EDGE 0
#define CV_SEQ_ELTYPE_GRAPH_VERTEX 0
#define CV_SEQ_ELTYPE_TRIAN_ATR 0
#define CV_SEQ_ELTYPE_CONNECTED_COMP 0
#define CV_SEQ_ELTYPE_POINT3D CV_32FC3
#define CV_SEQ_KIND_BITS 3
#define CV_SEQ_KIND_MASK (((1 << CV_SEQ_KIND_BITS) - 1)<<CV_SEQ_ELTYPE_BITS)
#define CV_SEQ_KIND_GENERIC (0 << CV_SEQ_ELTYPE_BITS)
#define CV_SEQ_KIND_CURVE (1 << CV_SEQ_ELTYPE_BITS)
#define CV_SEQ_KIND_BIN_TREE (2 << CV_SEQ_ELTYPE_BITS)
#define CV_SEQ_KIND_GRAPH (3 << CV_SEQ_ELTYPE_BITS)
#define CV_SEQ_KIND_SUBDIV2D (4 << CV_SEQ_ELTYPE_BITS)
#define CV_SEQ_FLAG_SHIFT (CV_SEQ_KIND_BITS + CV_SEQ_ELTYPE_BITS)
#define CV_SEQ_FLAG_CLOSED (1 << CV_SEQ_FLAG_SHIFT)
#define CV_SEQ_FLAG_SIMPLE (2 << CV_SEQ_FLAG_SHIFT)
#define CV_SEQ_FLAG_CONVEX (4 << CV_SEQ_FLAG_SHIFT)
#define CV_SEQ_FLAG_HOLE (8 << CV_SEQ_FLAG_SHIFT)
#define CV_GRAPH_FLAG_ORIENTED (1 << CV_SEQ_FLAG_SHIFT)
#define CV_GRAPH CV_SEQ_KIND_GRAPH
#define CV_ORIENTED_GRAPH (CV_SEQ_KIND_GRAPH|CV_GRAPH_FLAG_ORIENTED)
#define CV_SEQ_POINT_SET (CV_SEQ_KIND_GENERIC| CV_SEQ_ELTYPE_POINT)
#define CV_SEQ_POINT3D_SET (CV_SEQ_KIND_GENERIC| CV_SEQ_ELTYPE_POINT3D)
#define CV_SEQ_POLYLINE (CV_SEQ_KIND_CURVE | CV_SEQ_ELTYPE_POINT)
#define CV_SEQ_POLYGON (CV_SEQ_FLAG_CLOSED | CV_SEQ_POLYLINE )
#define CV_SEQ_CONTOUR CV_SEQ_POLYGON
#define CV_SEQ_SIMPLE_POLYGON (CV_SEQ_FLAG_SIMPLE | CV_SEQ_POLYGON )
#define CV_SEQ_CHAIN (CV_SEQ_KIND_CURVE | CV_SEQ_ELTYPE_CODE)
#define CV_SEQ_CHAIN_CONTOUR (CV_SEQ_FLAG_CLOSED | CV_SEQ_CHAIN)
#define CV_SEQ_POLYGON_TREE (CV_SEQ_KIND_BIN_TREE | CV_SEQ_ELTYPE_TRIAN_ATR)
#define CV_SEQ_CONNECTED_COMP (CV_SEQ_KIND_GENERIC | CV_SEQ_ELTYPE_CONNECTED_COMP)
#define CV_SEQ_INDEX (CV_SEQ_KIND_GENERIC | CV_SEQ_ELTYPE_INDEX)
für mich sieht das aus als ob man mit diesen Konstanten also
MAGIC or typ or größe or weissNicht
die flags haargenau so einstellen muss dass es halt passt!
Ich melde mich wieder wenn ich mehr weiß! Die Spur ist auf jeden Fall mal interessant!
Gruß und Ciao