Some bug fixed

Signed-off-by: Laex <laex@bk.ru>
This commit is contained in:
Laex 2013-04-07 14:41:15 +04:00
parent 764be948e3
commit 1b0a64aafd
7 changed files with 432 additions and 329 deletions

View File

@ -130,8 +130,9 @@ function cvGetWindowProperty(name: pCVChar; prop_id: Integer): Double; cdecl;
//display image within window (highgui windows remember their content)
CVAPI(void) cvShowImage( const char* name, const CvArr* image );
}
procedure cvShowImage(const name: pCVChar; const image: pIplImage); cdecl; overload;
procedure cvShowImage(const name: pCVChar; const image: pCvMat); cdecl; overload;
procedure cvShowImage(const name: pCVChar; const image: pCvArr); cdecl;
//procedure cvShowImage(const name: pCVChar; const image: pIplImage); cdecl; overload;
//procedure cvShowImage(const name: pCVChar; const image: pCvMat); cdecl; overload;
(* resize/move window *)
procedure cvResizeWindow(name: pCVChar; width: Integer; height: Integer); cdecl;
@ -792,9 +793,9 @@ uses
uLibName;
function cvNamedWindow; external highgui_Dll;
// procedure cvShowImage; external highgui_Dll;
procedure cvShowImage(const name: pCVChar; const image: pIplImage); external highgui_Dll name 'cvShowImage';
procedure cvShowImage(const name: pCVChar; const image: pCvMat); external highgui_Dll name 'cvShowImage';
procedure cvShowImage; external highgui_Dll;
//procedure cvShowImage(const name: pCVChar; const image: pIplImage); external highgui_Dll name 'cvShowImage';
//procedure cvShowImage(const name: pCVChar; const image: pCvMat); external highgui_Dll name 'cvShowImage';
function cvWaitKey; external highgui_Dll;
procedure cvDestroyWindow; external highgui_Dll;
procedure cvDestroyAllWindows; external highgui_Dll;

View File

@ -1,4 +1,4 @@
(*///////////////////////////////////////////////////////////////////////////////////////
(* ///////////////////////////////////////////////////////////////////////////////////////
//
// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING.
//
@ -43,21 +43,19 @@
Transtated from
opencv2/core/core_c.h
*)
*)
{$ifdef DEBUG}
{$IFDEF DEBUG}
{$A8,B-,C+,D+,E-,F-,G+,H+,I+,J-,K-,L+,M-,N+,O-,P+,Q+,R+,S-,T-,U-,V+,W+,X+,Y+,Z1}
{$else}
{$ELSE}
{$A8,B-,C-,D-,E-,F-,G+,H+,I+,J-,K-,L-,M-,N+,O+,P+,Q-,R-,S-,T-,U-,V+,W-,X+,Y-,Z1}
{$endif}
{$ENDIF}
{$WARN SYMBOL_DEPRECATED OFF}
{$WARN SYMBOL_PLATFORM OFF}
{$WARN UNIT_PLATFORM OFF}
{$WARN UNSAFE_TYPE OFF}
{$WARN UNSAFE_CODE OFF}
{$WARN UNSAFE_CAST OFF}
unit imgproc.types_c;
interface
@ -65,9 +63,10 @@ interface
uses
Windows, core.types_c;
(* Connected component structure *)
(* Connected component structure *)
type
pCvConnectedComp=^TCvConnectedComp;
pCvConnectedComp = ^TCvConnectedComp;
TCvConnectedComp = packed record
area: Double; (* area of the connected component *)
value: TCvScalar; (* average color of the connected component *)
@ -370,7 +369,7 @@ type
type
TCvSubdiv2DEdge = size_t;
{EXTERNALSYM CvSubdiv2DEdge}
{ EXTERNALSYM CvSubdiv2DEdge }
// // >> Following declaration is a macro definition!
// const
// CV_QUADEDGE2D_FIELDS()Integer flags;
@ -381,38 +380,58 @@ type
// pt:
// array [0 .. 3] of;
// CvSubdiv2DEdge next[4] = ^UADEDGE2D_FIELDS()Integer flags;
// struct CvSubdiv2DPoint;
// end;
// vSubdiv2DEdge first;
// CvPoint2D32f pt;
// Integer id;
pCvSubdiv2DPoint = ^TCvSubdiv2DPoint;
TCvSubdiv2DPoint = packed record
flags: Integer;
first: TCvSubdiv2DEdge;
pt: TCvPoint2D32f;
id: Integer;
end;
const
CV_SUBDIV2D_VIRTUAL_POINT_FLAG = (1 shl 30);
{$EXTERNALSYM CV_SUBDIV2D_VIRTUAL_POINT_FLAG}
// type
// = packed record
// end;
// CvQuadEdge2D;
//
// type
// = packed record
// end;
// CvSubdiv2DPoint;
//
/// / >> Following declaration is a macro definition!
// const
// CV_SUBDIV2D_FIELDS()CV_GRAPH_FIELDS()Integer quad_edges;
// Integer is_geometry_valid;
// CvSubdiv2DEdge recent_edge;
// CvPoint2D32f topleft;
// CvPoint2D32f bottomright;;
//
// type
// = packed record
// end;
// CvSubdiv2D;
Type
pCvQuadEdge2D = ^TCvQuadEdge2D;
TCvQuadEdge2D = packed record
flags: Integer;
pt: array [0 .. 3] of pCvSubdiv2DPoint;
next: array [0 .. 3] of TCvSubdiv2DEdge;
end;
pCvSubdiv2D = ^TCvSubdiv2D;
TCvSubdiv2D = packed record
flags: Integer; // Miscellaneous flags.
header_size: Integer; // Size of sequence header.
h_prev: pCvSeq; // Previous sequence.
h_next: pCvSeq; // Next sequence.
v_prev: pCvSeq; // 2nd previous sequence.
v_next: pCvSeq; // 2nd next sequence.
total: Integer; // Total number of elements.
elem_size: Integer; // Size of sequence element in bytes.
block_max: Pointer; // Maximal bound of the last block.
ptr: Pointer; // Current write pointer.
delta_elems: Integer; // Grow seq this many at a time.
storage: pCvMemStorage; // Where the seq is stored.
free_blocks: pCvSeqBlock; // Free blocks list.
first: pCvSeqBlock; // Pointer to the first sequence block.
free_elems: pCvSetElem;
active_count: Integer;
edges: pCvSet;
quad_edges: Integer;
is_geometry_valid: Integer;
recent_edge: TCvSubdiv2DEdge;
topleft: TCvPoint2D32f;
bottomright: TCvPoint2D32f;
end;
const
// Type CvSubdiv2DPointLocation
CV_PTLOC_ERROR = -2;
CV_PTLOC_OUTSIDE_RECT = -1;
@ -446,7 +465,8 @@ const
(* Convexity defect *)
type
pCvConvexityDefect=^TCvConvexityDefect;
pCvConvexityDefect = ^TCvConvexityDefect;
TCvConvexityDefect = packed record
start: PCvPoint; (* point of the contour where the defect begins *)
cend: PCvPoint; (* point of the contour where the defect ends *)

View File

@ -1,43 +1,43 @@
(*///////////////////////////////////////////////////////////////////////////////////////
//
// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING.
//
// By downloading, copying, installing or using the software you agree to this license.
// If you do not agree to this license, do not download, install,
// copy or use the software.
//
//
// Intel License Agreement
// For Open Source Computer Vision Library
//
// Copyright (C) 2000, Intel Corporation, all rights reserved.
// Third party copyrights are property of their respective owners.
//
// Redistribution and use in source and binary forms, with or without modification,
// are permitted provided that the following conditions are met:
//
// * Redistribution's of source code must retain the above copyright notice,
// this list of conditions and the following disclaimer.
//
// * Redistribution's in binary form must reproduce the above copyright notice,
// this list of conditions and the following disclaimer in the documentation
// and/or other materials provided with the distribution.
//
// * The name of Intel Corporation may not be used to endorse or promote products
// derived from this software without specific prior written permission.
//
// This software is provided by the copyright holders and contributors "as is" and
// any express or implied warranties, including, but not limited to, the implied
// warranties of merchantability and fitness for a particular purpose are disclaimed.
// In no event shall the Intel Corporation or contributors be liable for any direct,
// indirect, incidental, special, exemplary, or consequential damages
// (including, but not limited to, procurement of substitute goods or services;
// loss of use, data, or profits; or business interruption) however caused
// and on any theory of liability, whether in contract, strict liability,
// or tort (including negligence or otherwise) arising in any way out of
// the use of this software, even if advised of the possibility of such damage.
//
//*)
(* ///////////////////////////////////////////////////////////////////////////////////////
//
// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING.
//
// By downloading, copying, installing or using the software you agree to this license.
// If you do not agree to this license, do not download, install,
// copy or use the software.
//
//
// Intel License Agreement
// For Open Source Computer Vision Library
//
// Copyright (C) 2000, Intel Corporation, all rights reserved.
// Third party copyrights are property of their respective owners.
//
// Redistribution and use in source and binary forms, with or without modification,
// are permitted provided that the following conditions are met:
//
// * Redistribution's of source code must retain the above copyright notice,
// this list of conditions and the following disclaimer.
//
// * Redistribution's in binary form must reproduce the above copyright notice,
// this list of conditions and the following disclaimer in the documentation
// and/or other materials provided with the distribution.
//
// * The name of Intel Corporation may not be used to endorse or promote products
// derived from this software without specific prior written permission.
//
// This software is provided by the copyright holders and contributors "as is" and
// any express or implied warranties, including, but not limited to, the implied
// warranties of merchantability and fitness for a particular purpose are disclaimed.
// In no event shall the Intel Corporation or contributors be liable for any direct,
// indirect, incidental, special, exemplary, or consequential damages
// (including, but not limited to, procurement of substitute goods or services;
// loss of use, data, or profits; or business interruption) however caused
// and on any theory of liability, whether in contract, strict liability,
// or tort (including negligence or otherwise) arising in any way out of
// the use of this software, even if advised of the possibility of such damage.
//
// *)
{$IFDEF DEBUG}
{$A8,B-,C+,D+,E-,F-,G+,H+,I+,J-,K-,L+,M-,N+,O-,P+,Q+,R+,S-,T-,U-,V+,W+,X+,Y+,Z1}
@ -50,12 +50,11 @@
{$WARN UNSAFE_TYPE OFF}
{$WARN UNSAFE_CODE OFF}
{$WARN UNSAFE_CAST OFF}
unit legacy;
interface
Uses Core.types_c;
Uses Windows, Core.types_c, imgproc.types_c;
// CVAPI(CvSeq*) cvSegmentImage( const CvArr* srcarr, CvArr* dstarr,
// double canny_threshold,
@ -2932,83 +2931,89 @@ procedure cvSnakeImage(const image: pIplImage; points: pCvPointArray; length: In
/// ****************************************************************************************\
// * Planar subdivisions *
// \****************************************************************************************/
//
// typedef size_t CvSubdiv2DEdge;
//
// #define CV_QUADEDGE2D_FIELDS() \
// int flags; \
// struct CvSubdiv2DPoint* pt[4]; \
// CvSubdiv2DEdge next[4];
//
// #define CV_SUBDIV2D_POINT_FIELDS()\
// int flags; \
// CvSubdiv2DEdge first; \
// CvPoint2D32f pt; \
// int id;
//
// #define CV_SUBDIV2D_VIRTUAL_POINT_FLAG (1 << 30)
//
// typedef struct CvQuadEdge2D
// {
// CV_QUADEDGE2D_FIELDS()
// }
// CvQuadEdge2D;
//
// typedef struct CvSubdiv2DPoint
// {
// CV_SUBDIV2D_POINT_FIELDS()
// }
// CvSubdiv2DPoint;
//
// #define CV_SUBDIV2D_FIELDS() \
// CV_GRAPH_FIELDS() \
// int quad_edges; \
// int is_geometry_valid; \
// CvSubdiv2DEdge recent_edge; \
// CvPoint2D32f topleft; \
// CvPoint2D32f bottomright;
//
// typedef struct CvSubdiv2D
// {
// CV_SUBDIV2D_FIELDS()
// }
// CvSubdiv2D;
//
// typedef enum CvSubdiv2DPointLocation
// {
// CV_PTLOC_ERROR = -2,
// CV_PTLOC_OUTSIDE_RECT = -1,
// CV_PTLOC_INSIDE = 0,
// CV_PTLOC_VERTEX = 1,
// CV_PTLOC_ON_EDGE = 2
// }
// CvSubdiv2DPointLocation;
//
// typedef enum CvNextEdgeType
// {
// CV_NEXT_AROUND_ORG = 0x00,
// CV_NEXT_AROUND_DST = 0x22,
// CV_PREV_AROUND_ORG = 0x11,
// CV_PREV_AROUND_DST = 0x33,
// CV_NEXT_AROUND_LEFT = 0x13,
// CV_NEXT_AROUND_RIGHT = 0x31,
// CV_PREV_AROUND_LEFT = 0x20,
// CV_PREV_AROUND_RIGHT = 0x02
// }
// CvNextEdgeType;
//
/// * get the next edge with the same origin point (counterwise) */
// #define CV_SUBDIV2D_NEXT_EDGE( edge ) (((CvQuadEdge2D*)((edge) & ~3))->next[(edge)&3])
//
//
/// * Initializes Delaunay triangulation */
// CVAPI(void) cvInitSubdivDelaunay2D( CvSubdiv2D* subdiv, CvRect rect );
//
type
pCvSubdiv2DEdge = ^TCvSubdiv2DEdge;
TCvSubdiv2DEdge = size_t;
//
// #define CV_QUADEDGE2D_FIELDS() \
// int flags; \
// struct CvSubdiv2DPoint* pt[4]; \
// CvSubdiv2DEdge next[4];
//
// #define CV_SUBDIV2D_POINT_FIELDS()\
// int flags; \
// CvSubdiv2DEdge first; \
// CvPoint2D32f pt; \
// int id;
//
// #define CV_SUBDIV2D_VIRTUAL_POINT_FLAG (1 << 30)
//
// typedef struct CvQuadEdge2D
// {
// CV_QUADEDGE2D_FIELDS()
// }
// CvQuadEdge2D;
//
// typedef struct CvSubdiv2DPoint
// {
// CV_SUBDIV2D_POINT_FIELDS()
// }
// CvSubdiv2DPoint;
//
// #define CV_SUBDIV2D_FIELDS() \
// CV_GRAPH_FIELDS() \
// int quad_edges; \
// int is_geometry_valid; \
// CvSubdiv2DEdge recent_edge; \
// CvPoint2D32f topleft; \
// CvPoint2D32f bottomright;
//
// typedef struct CvSubdiv2D
// {
// CV_SUBDIV2D_FIELDS()
// }
// CvSubdiv2D;
Type
TCvSubdiv2DPointLocation = Integer;
const
{ CvSubdiv2DPointLocation enum }
CV_PTLOC_ERROR = -2;
CV_PTLOC_OUTSIDE_RECT = -1;
CV_PTLOC_INSIDE = 0;
CV_PTLOC_VERTEX = 1;
CV_PTLOC_ON_EDGE = 2;
Type
TCvNextEdgeType = Integer;
const
{ CvNextEdgeType enum }
CV_NEXT_AROUND_ORG = $00;
CV_NEXT_AROUND_DST = $22;
CV_PREV_AROUND_ORG = $11;
CV_PREV_AROUND_DST = $33;
CV_NEXT_AROUND_LEFT = $13;
CV_NEXT_AROUND_RIGHT = $31;
CV_PREV_AROUND_LEFT = $20;
CV_PREV_AROUND_RIGHT = $02;
/// * get the next edge with the same origin point (counterwise) */
// #define CV_SUBDIV2D_NEXT_EDGE( edge ) (((CvQuadEdge2D*)((edge) & ~3))->next[(edge)&3])
/// * Initializes Delaunay triangulation */
// CVAPI(void) cvInitSubdivDelaunay2D( CvSubdiv2D* subdiv, CvRect rect );
procedure cvInitSubdivDelaunay2D(subdiv: pCvSubdiv2D; rect: TCvRect); cdecl;
/// * Creates new subdivision */
// CVAPI(CvSubdiv2D*) cvCreateSubdiv2D( int subdiv_type, int header_size,
// int vtx_size, int quadedge_size,
// CvMemStorage* storage );
//
function cvCreateSubdiv2D(subdiv_type: Integer; header_size: Integer; vtx_size: Integer; quadedge_size: Integer;
storage: pCvMemStorage): pCvSubdiv2D; cdecl;
/// ************************* high-level subdivision functions ***************************/
//
/// * Simplified Delaunay diagram creation */
@ -3020,11 +3025,11 @@ procedure cvSnakeImage(const image: pIplImage; points: pCvPointArray; length: In
// cvInitSubdivDelaunay2D( subdiv, rect );
// return subdiv;
// }
//
//
/// * Inserts new point to the Delaunay triangulation */
// CVAPI(CvSubdiv2DPoint*) cvSubdivDelaunay2DInsert( CvSubdiv2D* subdiv, CvPoint2D32f pt);
//
function cvSubdivDelaunay2DInsert(subdiv: pCvSubdiv2D; pt: TCvPoint2D32f): pCvSubdiv2DPoint; cdecl;
/// * Locates a point within the Delaunay triangulation (finds the edge
// the point is left to or belongs to, or the triangulation point the given
// point coinsides with */
@ -3032,11 +3037,14 @@ procedure cvSnakeImage(const image: pIplImage; points: pCvPointArray; length: In
// CvSubdiv2D* subdiv, CvPoint2D32f pt,
// CvSubdiv2DEdge* edge,
// CvSubdiv2DPoint** vertex CV_DEFAULT(NULL) );
//
function cvSubdiv2DLocate(subdiv: pCvSubdiv2D; pt: TCvPoint2D32f; edge: pCvSubdiv2DEdge; vertex: pCvSubdiv2DPoint = nil)
: TCvSubdiv2DPointLocation; cdecl;
/// * Calculates Voronoi tesselation (i.e. coordinates of Voronoi points) */
// CVAPI(void) cvCalcSubdivVoronoi2D( CvSubdiv2D* subdiv );
//
//
procedure cvCalcSubdivVoronoi2D(subdiv: pCvSubdiv2D); cdecl;
/// * Removes all Voronoi points from the tesselation */
// CVAPI(void) cvClearSubdivVoronoi2D( CvSubdiv2D* subdiv );
//
@ -3051,39 +3059,40 @@ procedure cvSnakeImage(const image: pIplImage; points: pCvPointArray; length: In
// {
// return CV_SUBDIV2D_NEXT_EDGE(edge);
// }
//
//
// CV_INLINE CvSubdiv2DEdge cvSubdiv2DRotateEdge( CvSubdiv2DEdge edge, int rotate )
// {
// return (edge & ~3) + ((edge + rotate) & 3);
// }
//
function cvSubdiv2DRotateEdge(edge: TCvSubdiv2DEdge; rotate: Integer): TCvSubdiv2DEdge; inline;
// CV_INLINE CvSubdiv2DEdge cvSubdiv2DSymEdge( CvSubdiv2DEdge edge )
// {
// return edge ^ 2;
// }
//
// CV_INLINE CvSubdiv2DEdge cvSubdiv2DGetEdge( CvSubdiv2DEdge edge, CvNextEdgeType type )
// {
// CvQuadEdge2D* e = (CvQuadEdge2D*)(edge & ~3);
// edge = e->next[(edge + (int)type) & 3];
// return (edge & ~3) + ((edge + ((int)type >> 4)) & 3);
// }
//
//
function cvSubdiv2DGetEdge(edge: TCvSubdiv2DEdge; _type: TCvNextEdgeType): TCvSubdiv2DEdge; inline;
// CV_INLINE CvSubdiv2DPoint* cvSubdiv2DEdgeOrg( CvSubdiv2DEdge edge )
// {
// CvQuadEdge2D* e = (CvQuadEdge2D*)(edge & ~3);
// return (CvSubdiv2DPoint*)e->pt[edge & 3];
// }
//
//
function cvSubdiv2DEdgeOrg(edge: TCvSubdiv2DEdge): pCvSubdiv2DPoint; inline;
// CV_INLINE CvSubdiv2DPoint* cvSubdiv2DEdgeDst( CvSubdiv2DEdge edge )
// {
// CvQuadEdge2D* e = (CvQuadEdge2D*)(edge & ~3);
// return (CvSubdiv2DPoint*)e->pt[(edge + 2) & 3];
// }
//
function cvSubdiv2DEdgeDst(edge: TCvSubdiv2DEdge): pCvSubdiv2DPoint; inline;
/// ****************************************************************************************\
// * Additional operations on Subdivisions *
// \****************************************************************************************/
@ -3531,5 +3540,50 @@ function cvCreateStereoGCState; external legacy_Dll;
procedure cvFindStereoCorrespondenceGC; external legacy_Dll;
procedure cvReleaseStereoGCState; external legacy_Dll;
procedure cvSnakeImage; external legacy_Dll;
function cvCreateSubdiv2D; external legacy_Dll;
procedure cvInitSubdivDelaunay2D; external legacy_Dll;
function cvSubdiv2DEdgeOrg(edge: TCvSubdiv2DEdge): pCvSubdiv2DPoint; inline;
Var
e: pCvQuadEdge2D;
begin
// CvQuadEdge2D* e = (CvQuadEdge2D*)(edge & ~3);
e := pCvQuadEdge2D(edge and (not 3));
// return (CvSubdiv2DPoint*)e->pt[edge & 3];
Result := pCvSubdiv2DPoint(e^.pt[edge and 3]);
end;
function cvSubdiv2DEdgeDst(edge: TCvSubdiv2DEdge): pCvSubdiv2DPoint; inline;
Var
e: pCvQuadEdge2D;
begin
// CvQuadEdge2D* e = (CvQuadEdge2D*)(edge & ~3);
e := pCvQuadEdge2D(edge and (not 3));
// return (CvSubdiv2DPoint*)e->pt[(edge + 2) & 3];
Result := pCvSubdiv2DPoint(e^.pt[(edge + 2) and 3]);
end;
function cvSubdiv2DLocate; external legacy_Dll;
function cvSubdiv2DGetEdge(edge: TCvSubdiv2DEdge; _type: TCvNextEdgeType): TCvSubdiv2DEdge; inline;
Var
e: pCvQuadEdge2D;
begin
// CvQuadEdge2D* e = (CvQuadEdge2D*)(edge & ~3);
e := pCvQuadEdge2D(edge and (not 3));
// edge = e->next[(edge + (int)type) & 3];
edge := e^.next[(edge + _type) and 3];
// return (edge & ~3) + ((edge + ((int)type >> 4)) & 3);
Result := (edge and (not 3)) + ((edge + (_type shr 4)) and 3);
end;
function cvSubdiv2DRotateEdge(edge: TCvSubdiv2DEdge; rotate: Integer): TCvSubdiv2DEdge; inline;
begin
// return (edge & ~3) + ((edge + rotate) & 3);
Result := (edge and (not 3)) + ((edge + rotate) and 3);
end;
procedure cvCalcSubdivVoronoi2D; external legacy_Dll;
function cvSubdivDelaunay2DInsert; external legacy_Dll;
end.

View File

@ -86,10 +86,10 @@ Type
* cArray cType is recognized at runtime:
*)
type
TCvArr = record
end;
// TCvArr = record
// end;
pCvArr = ^TCvArr;
pCvArr = Pointer;
TCv32suf = packed record
case Byte of
@ -878,6 +878,8 @@ type
next_free: pCvSetElem;
end;
pCvSet = ^TCvSet;
TCvSet = packed record
flags: Integer; (* Miscellaneous flags. *)
header_size: Integer; (* Size of sequence header. *)
@ -902,78 +904,82 @@ const
{$EXTERNALSYM CV_SET_ELEM_IDX_MASK}
CV_SET_ELEM_FREE_FLAG = 1 shl (SizeOf(Integer) * 8 - 1);
{$EXTERNALSYM CV_SET_ELEM_FREE_FLAG}
(* ************************************ Graph ******************************************* *)
// Checks whether the element pointed by ptr belongs to a set or not
// #define CV_IS_SET_ELEM( ptr ) (((CvSetElem*)(ptr))->flags >= 0)
function CV_IS_SET_ELEM(ptr: Pointer): Boolean; inline;
(*
We represent a graph as a set of vertices.
Vertices contain their adjacency lists (more exactly, pointers to first incoming or
outcoming edge (or 0 if isolated vertex)) then . Edges are stored in another set.
There is a singly-linked list of incoming/outcoming edges for each vertex.
(* ************************************ Graph ******************************************* *)
Each edge consists of
(*
We represent a graph as a set of vertices.
Vertices contain their adjacency lists (more exactly, pointers to first incoming or
outcoming edge (or 0 if isolated vertex)) then . Edges are stored in another set.
There is a singly-linked list of incoming/outcoming edges for each vertex.
o Two pointers to the starting and ending vertices
(vtx : array[0..-1] of and vtx[1] respectively).
Each edge consists of
A graph may be oriented or not. In the latter , edges between
vertex i to vertex j are not distinguished during search operations.
o Two pointers to the starting and ending vertices
(vtx : array[0..-1] of and vtx[1] respectively).
o Two pointers to next edges for the starting and ending vertices, where
next : array[0..-1] of points to the next edge in the vtx[0] adjacency list and
next : array[0..0] of points to the next edge in the vtx[1] adjacency list.
*)
// >> Following declaration is a macro definition!
// const
// CV_GRAPH_EDGE_FIELDS()Integer flags;
// Single weight;
//
// type;
//
// type
// next:
// array [0 .. 1] of;
// struct CvGraphVtx * vtx[2] = ^RAPH_EDGE_FIELDS()Integer flags;
// Single weight;
// struct CvGraphEdge;
// end;
//
// type
//
// = packed record
// end;
// CvGraphEdge;
//
// type
//
// = packed record
// end;
// CvGraphVtx;
//
// type
//
// = packed record ptr: ^CvPoint2D32f;
// end;
// CvGraphVtx2D;
//
// (*
// Graph is 'derived' from the set (this is set a of vertices)
// and includes another set (edges)
// *)
/// / >> Following declaration is a macro definition!
// const
// CV_GRAPH_FIELDS()CV_SET_FIELDS()CvSet * edges;;
//
// type
//
// = packed record
// end;
// CvGraph;
//
// const
// CV_TYPE_NAME_GRAPH = 'opencv-graph';
// {$EXTERNALSYM CV_TYPE_NAME_GRAPH}
A graph may be oriented or not. In the latter , edges between
vertex i to vertex j are not distinguished during search operations.
(* ********************************** Chain/Countour ************************************ *)
o Two pointers to next edges for the starting and ending vertices, where
next : array[0..-1] of points to the next edge in the vtx[0] adjacency list and
next : array[0..0] of points to the next edge in the vtx[1] adjacency list.
*)
// >> Following declaration is a macro definition!
// const
// CV_GRAPH_EDGE_FIELDS()Integer flags;
// Single weight;
//
// type;
//
// type
// next:
// array [0 .. 1] of;
// struct CvGraphVtx * vtx[2] = ^RAPH_EDGE_FIELDS()Integer flags;
// Single weight;
// struct CvGraphEdge;
// end;
//
// type
//
// = packed record
// end;
// CvGraphEdge;
//
// type
//
// = packed record
// end;
// CvGraphVtx;
//
// type
//
// = packed record ptr: ^CvPoint2D32f;
// end;
// CvGraphVtx2D;
//
// (*
// Graph is 'derived' from the set (this is set a of vertices)
// and includes another set (edges)
// *)
/// / >> Following declaration is a macro definition!
// const
// CV_GRAPH_FIELDS()CV_SET_FIELDS()CvSet * edges;;
//
// type
//
// = packed record
// end;
// CvGraph;
//
// const
// CV_TYPE_NAME_GRAPH = 'opencv-graph';
// {$EXTERNALSYM CV_TYPE_NAME_GRAPH}
(* ********************************** Chain/Countour ************************************ *)
type
@ -1557,7 +1563,6 @@ procedure CV_SWAP(var a, b, t: pCvPoint2D32f); inline; overload;
procedure CV_SWAP(var a, b, t: pCvMat); inline; overload;
procedure CV_SWAP(var a, b, t: Pointer); inline; overload;
// {$IFNDEF MIN}
// {$HPPEMIT '# define MIN(a,b) ((a) > (b) ? (b) : (a))'}
// {$ENDIF}
@ -1988,7 +1993,6 @@ function CvTermCriteria(_type: Integer; max_iter: Integer; epsilon: Double): TCv
}
*)
function cvFloor(value: Double): Integer; inline;
function cvScalarAll(val0123: Double): TCvScalar; inline;
function CvPoint(const x, y: Integer): TCvPoint; inline;
function CvSize(const width, height: Integer): TCvSize; inline;
@ -1996,17 +2000,16 @@ function CvScalar(const val0: Double; const val1: Double = 0; const val2: Double
: TCvScalar; inline;
function cvRandInt(Var rng: TCvRNG): Cardinal; inline;
function CvRect(Const x, y, width, height: Integer): TCvRect; inline;
function cvRound(value: Double): Integer; inline;
function cvRound(value: Double): Integer;
(* Inline constructor. No data is allocated internally!!!
{
* Inline constructor. No data is allocated internally!!!
* (Use together with cvCreateData, or use cvCreateMat instead to
* get a matrix with allocated data):
*)
{
*
CV_INLINE CvMat cvMat( int rows, int cols, int type, void* data CV_DEFAULT(NULL))
{
CvMat m;
assert( (unsigned)CV_MAT_DEPTH(type) <= CV_64F );
type = CV_MAT_TYPE(type);
m.type = CV_MAT_MAGIC_VAL | CV_MAT_CONT_FLAG | type;
@ -2027,12 +2030,12 @@ function CV_MAT_CN(flags: Integer): Integer;
function CV_32FC1: Integer;
function CV_32SC1: Integer;
function CV_MAKETYPE(depth, cn: Integer): Integer;
// #define CV_MAT_ELEM( mat, elemtype, row, col ) \
// #define CV_MAT_ELEM( mat, elemtype, row, col )
// (*(elemtype*)CV_MAT_ELEM_PTR_FAST( mat, row, col, sizeof(elemtype)))
function CV_MAT_ELEM(const mat: TCvMat; const elemsize: Integer; const row, col: Integer): Pointer;
// #define CV_MAT_ELEM_PTR_FAST( mat, row, col, pix_size ) \
// (assert( (unsigned)(row) < (unsigned)(mat).rows && \
// (unsigned)(col) < (unsigned)(mat).cols ), \
// #define CV_MAT_ELEM_PTR_FAST( mat, row, col, pix_size )
// (assert( (unsigned)(row) < (unsigned)(mat).rows &&
// (unsigned)(col) < (unsigned)(mat).cols ),
// (mat).data.ptr + (size_t)(mat).step*(row) + (pix_size)*(col))
function CV_MAT_ELEM_PTR_FAST(const mat: TCvMat; const row, col, pix_size: Integer): Pointer;
@ -2053,11 +2056,6 @@ begin
Result := CV_MAT_ELEM_PTR_FAST(mat, row, col, elemsize);
end;
// function CV_MAT_ELEM(const mat: TCvMat; const elemtype: Integer; const row, col: Integer): Pointer;
// begin
// Result := CV_MAT_ELEM_PTR_FAST(mat, row, col, CV_ELEM_SIZE(elemtype));
// end;
function CvAttrList(const attr: ppCVChar = nil; next: pCvAttrList = nil): TCvAttrList;
begin
Result.attr := attr;
@ -2192,14 +2190,14 @@ end;
procedure CV_READ_SEQ_ELEM;
begin
// assert( (reader).seq->elem_size == sizeof(elem));
// memcpy( &(elem), (reader).ptr, sizeof((elem)));
// CV_NEXT_SEQ_ELEM( sizeof(elem), reader )
Assert(Reader.seq^.elem_size = SizeOfElem);
// memcpy( &(elem), (reader).ptr, sizeof((elem)));
Move(Reader.ptr, Elem, SizeOfElem);
CV_NEXT_SEQ_ELEM(SizeOf(Elem), Reader);
// CV_NEXT_SEQ_ELEM( sizeof(elem), reader )
CV_NEXT_SEQ_ELEM(SizeOfElem, Reader);
end;
procedure CV_NEXT_SEQ_ELEM;
procedure CV_NEXT_SEQ_ELEM(const elem_size: Integer; const Reader: TCvSeqReader); inline;
begin
// if( ((reader).ptr += (elem_size)) >= (reader).block_max )
// cvChangeSeqBlock( &(reader), 1 );
@ -2252,7 +2250,7 @@ end;
procedure CV_SWAP(var a, b, t: pCvMat);
begin
CV_SWAP(Pointer(a), Pointer(b), Pointer(t));
CV_SWAP(Pointer(a), Pointer(b), Pointer(t));
end;
procedure CV_SWAP(var a, b, t: pIplImage);
@ -2278,10 +2276,14 @@ end;
function CV_SEQ_ELEM(seq: pCvSeq; const size_of_elem: Integer; index: Integer): Pointer; inline;
begin
Assert((SizeOf(seq^.first[0]) = SizeOf(TCvSeqBlock)) and (seq^.elem_size = size_of_elem));
if Assigned(seq^.first) and (index < seq^.first^.count) then
// assert(sizeof((seq)->first[0]) == sizeof(CvSeqBlock) && (seq)->elem_size == sizeof(elem_type))
Assert(Assigned(seq^.first) and (SizeOf(seq^.first^) = SizeOf(TCvSeqBlock)) and (seq^.elem_size = size_of_elem));
// (elem_type*)((seq)->first && (unsigned)index <(unsigned)((seq)->first->count) ?
if Assigned(seq^.first) and (Cardinal(index) < Cardinal(seq^.first^.count)) then
// (seq)->first->data + (index) * sizeof(elem_type) :
Result := Pointer(Integer(seq^.first^.data) + index * size_of_elem)
else
// cvGetSeqElem( (CvSeq*)(seq), (index) )))
Result := cvGetSeqElem(seq, index);
end;
@ -2300,4 +2302,10 @@ begin
Result := CV_MAKETYPE(CV_8U, 3);
end;
function CV_IS_SET_ELEM(ptr: Pointer): Boolean; inline;
begin
// #define CV_IS_SET_ELEM( ptr ) (((CvSetElem*)(ptr))->flags >= 0)
Result := pCvSetElem(ptr)^.flags >= 0;
end;
end.

View File

@ -439,10 +439,10 @@ function cvGetReal2D(const arr: pCvMat; idx0, idx1: Integer): Double; cdecl;
/* Returns width and height of array in elements */
CVAPI(CvSize) cvGetSize( const CvArr* arr );
}
function cvGetSize(const arr: pCvArr): TCvSize; overload;
function cvGetSize(const arr: pIplImage): TCvSize; overload;
function _cvGetSize(const arr: pCvArr): TCvSize; cdecl;
// procedure _cvGetSize(const arr: pCvArr;var size: TCvSize); cdecl;
function cvGetSize(const arr: pCvArr): TCvSize; //overload;
procedure _cvGetSize(const arr: pCvArr; var size: TCvSize); cdecl;
// function cvGetSize(const arr: pIplImage): TCvSize; overload;
// function _cvGetSize(const arr: pCvArr): TCvSize; cdecl;
// function _cvGetSize(const image: pIplImage): TCvSize;
//
@ -459,7 +459,8 @@ procedure cvCopyImage(const src: pIplImage; dst: pIplImage; const mask: pIplImag
/* Sets all or "masked" elements of input array to the same value*/
CVAPI(void) cvSet( CvArr* arr, CvScalar value,const CvArr* mask CV_DEFAULT(NULL) );
}
procedure cvSet(arr: pCvArr; value: TCvScalar; const mask: pCvArr = Nil); cdecl;
procedure cvSet(arr: pCvArr; value: TCvScalar; const mask: pCvArr = Nil); cdecl; // overload;
// procedure cvSet(arr: pIplImage; value: TCvScalar; const mask: pCvArr = Nil); cdecl; overload;
// procedure cvSetZero(CvArr * arr: unction mask CV_DEFAULT(v1: 0)): CvArr; ();
// const cvZero = cvSetZero;
@ -467,8 +468,9 @@ procedure cvSet(arr: pCvArr; value: TCvScalar; const mask: pCvArr = Nil); cdecl;
// CVAPI(void) cvSetZero( CvArr* arr );
// #define cvZero cvSetZero
procedure cvSetZero(arr: pIplImage); cdecl;
procedure cvZero(arr: pIplImage); cdecl; overload;
procedure cvZero(arr: pCvMat); cdecl; overload;
procedure cvZero(arr: pCvArr); cdecl;
//procedure cvZero(arr: pIplImage); cdecl; overload;
//procedure cvZero(arr: pCvMat); cdecl; overload;
{
/* Splits a multi-channel array into the set of single-channel arrays or
@ -556,10 +558,11 @@ procedure cvCvtPlaneToPix(
#define cvScale cvConvertScale
#define cvConvert( src, dst ) cvConvertScale( (src), (dst), 1, 0 )
}
procedure cvConvertScale(const src: pIplImage; dst: pIplImage; scale: Double = 1; shift: Double = 0); cdecl; overload;
procedure cvConvertScale(const src: pCvMat; dst: pCvMat; scale: Double = 1; shift: Double = 0); cdecl; overload;
procedure cvConvert(const src: pIplImage; dst: pIplImage); inline;
procedure cvConvertScale(const src: pCvArr; dst: pCvArr; scale: Double = 1; shift: Double = 0); cdecl;
// procedure cvConvertScale(const src: pIplImage; dst: pIplImage; scale: Double = 1; shift: Double = 0); cdecl; overload;
// procedure cvConvertScale(const src: pCvMat; dst: pCvMat; scale: Double = 1; shift: Double = 0); cdecl; overload;
// procedure cvConvert(const src: pIplImage; dst: pIplImage); inline;
procedure cvConvert(const src: pCvArr; dst: pCvArr); inline;
// (* Performs linear transformation on every source array element,
// stores absolute value of the cResult:
@ -1174,7 +1177,9 @@ function cvGetSeqElem(const seq: pCvSeq; index: Integer): Pointer; cdecl;
int reverse CV_DEFAULT(0) );
}
procedure cvStartReadSeq(const seq: pCvSeq; reader: pCvSeqReader; reverse: Integer = 0); cdecl;
procedure cvStartReadSeq(const seq: Pointer; reader: pCvSeqReader; reverse: Integer = 0); cdecl;
// procedure cvStartReadSeq(const seq: pCvSeq; reader: pCvSeqReader; reverse: Integer = 0); cdecl; overload;
// procedure cvStartReadSeq(const seq: pCvSet; reader: pCvSeqReader; reverse: Integer = 0); cdecl; overload;
// CVAPI(Integer)cvGetSeqReaderPos(CvSeqReader * reader: v1: 0)): Integer; ();
@ -1405,10 +1410,12 @@ const
CvScalar color, int thickness CV_DEFAULT(1),
int line_type CV_DEFAULT(8), int shift CV_DEFAULT(0) );
}
procedure cvLine(img: pIplImage; pt1, pt2: TCvPoint; color: TCvScalar; thickness: Integer = 1; line_type: Integer = 8;
shift: Integer = 0); cdecl; overload;
procedure cvLine(img: pCvMat; pt1, pt2: TCvPoint; color: TCvScalar; thickness: Integer = 1; line_type: Integer = 8;
shift: Integer = 0); cdecl; overload;
procedure cvLine(img: pCvArr; pt1, pt2: TCvPoint; color: TCvScalar; thickness: Integer = 1; line_type: Integer = 8;
shift: Integer = 0); cdecl;
// procedure cvLine(img: pIplImage; pt1, pt2: TCvPoint; color: TCvScalar; thickness: Integer = 1; line_type: Integer = 8;
// shift: Integer = 0); cdecl; overload;
// procedure cvLine(img: pCvMat; pt1, pt2: TCvPoint; color: TCvScalar; thickness: Integer = 1; line_type: Integer = 8;
// shift: Integer = 0); cdecl; overload;
{
/* Draws a rectangle given two opposite corners of the rectangle (pt1 & pt2),
@ -1425,14 +1432,10 @@ procedure cvLine(img: pCvMat; pt1, pt2: TCvPoint; color: TCvScalar; thickness: I
procedure cvRectangle(img: pIplImage; pt1, pt2: TCvPoint; color: TCvScalar; thickness: Integer = 1;
line_type: Integer = 8; shift: Integer = 0); cdecl;
// (* Draws a rectangle specified by a CvRect structure *)
// procedure cvRectangleR(8: v1: ); shift CV_DEFAULT(0): Integer): Integer;
//
// (* Draws a circle with specified center and radius.
// Thickness works in the same way as with cvRectangle *)
// procedure cvCircle(8: v1: ); shift CV_DEFAULT(0): Integer): Integer;
{
CVAPI(void) cvCircle( CvArr* img,
//Draws a circle with specified center and radius.
CVAPI(void) cvCircle(
CvArr* img,
CvPoint center,
int radius,
CvScalar color,
@ -1440,10 +1443,12 @@ procedure cvRectangle(img: pIplImage; pt1, pt2: TCvPoint; color: TCvScalar; thic
int line_type CV_DEFAULT(8),
int shift CV_DEFAULT(0));
}
procedure cvCircle(img: pIplImage; center: TCvPoint; radius: Integer; color: TCvScalar; thickness: Integer = 1;
line_type: Integer = 8; shift: Integer = 0); cdecl; overload;
procedure cvCircle(img: pCvMat; center: TCvPoint; radius: Integer; color: TCvScalar; thickness: Integer = 1;
line_type: Integer = 8; shift: Integer = 0); cdecl; overload;
procedure cvCircle(img: pCvArr; center: TCvPoint; radius: Integer; color: TCvScalar; thickness: Integer = 1;
line_type: Integer = 8; shift: Integer = 0); cdecl;
// procedure cvCircle(img: pIplImage; center: TCvPoint; radius: Integer; color: TCvScalar; thickness: Integer = 1;
// line_type: Integer = 8; shift: Integer = 0); cdecl; overload;
// procedure cvCircle(img: pCvMat; center: TCvPoint; radius: Integer; color: TCvScalar; thickness: Integer = 1;
// line_type: Integer = 8; shift: Integer = 0); cdecl; overload;
{
/* Draws ellipse outline, filled ellipse, elliptic arc or filled elliptic sector,
@ -1475,11 +1480,11 @@ procedure cvEllipse(img: pIplImage; center: TCvPoint; axes: TCvSize; angle: Doub
procedure cvEllipseBox(img: pIplImage; box: TCvBox2D; color: TCvScalar; thickness: Integer = 1; line_type: Integer = 8;
shift: Integer = 0); inline;
// (* Fills convex or monotonous polygon. *)
// procedure cvFillConvexPoly(var Fills an area bounded by one or more arbitrary polygons * )
// procedure cvFillPoly(CvArr * img: v1: 0)): Integer; (; pts: array of CvPoint; var npts: Integer;
// contours: Integer; color: CvScalar; var
/// * Fills convex or monotonous polygon. */
// CVAPI(void) cvFillConvexPoly( CvArr* img, const CvPoint* pts, int npts, CvScalar color,
// int line_type CV_DEFAULT(8), int shift CV_DEFAULT(0));
procedure cvFillConvexPoly(img: pIplImage; const pts: pCVPoint; npts: Integer; color: TCvScalar; line_type: Integer = 8;
shift: Integer = 0); cdecl;
{
/* Draws one or more polygonal curves */
@ -2021,12 +2026,13 @@ asm
mov Result.height,ecx
end;
function cvGetSize(const arr: pIplImage): TCvSize;
begin
Result := cvGetSize(pCvArr(arr));
end;
//function cvGetSize(const arr: pIplImage): TCvSize;
//begin
// Result := cvGetSize(pCvArr(arr));
//end;
function _cvGetSize; external Core_Dll name 'cvGetSize'; cdecl;
procedure _cvGetSize(const arr: pCvArr; var size: TCvSize); external Core_Dll name 'cvGetSize';
//function _cvGetSize; external Core_Dll name 'cvGetSize';
// function _cvGetSize(const image: pIplImage): TCvSize;
// begin
@ -2046,36 +2052,34 @@ procedure cvSet; external Core_Dll;
procedure cvInitFont; external Core_Dll;
procedure cvPutText; external Core_Dll;
//procedure cvCircle; external Core_Dll;
procedure cvCircle(img: pIplImage; center: TCvPoint; radius: Integer; color: TCvScalar; thickness: Integer = 1;
line_type: Integer = 8; shift: Integer = 0); external Core_Dll name 'cvCircle';
procedure cvCircle(img: pCvMat; center: TCvPoint; radius: Integer; color: TCvScalar; thickness: Integer = 1;
line_type: Integer = 8; shift: Integer = 0); external Core_Dll name 'cvCircle';
procedure cvCircle; external Core_Dll;
// procedure cvCircle(img: pIplImage; center: TCvPoint; radius: Integer; color: TCvScalar; thickness: Integer = 1;
// line_type: Integer = 8; shift: Integer = 0); external Core_Dll name 'cvCircle';
// procedure cvCircle(img: pCvMat; center: TCvPoint; radius: Integer; color: TCvScalar; thickness: Integer = 1;
// line_type: Integer = 8; shift: Integer = 0); external Core_Dll name 'cvCircle';
//procedure cvLine; external Core_Dll;
procedure cvLine(img: pIplImage; pt1, pt2: TCvPoint; color: TCvScalar; thickness: Integer = 1; line_type: Integer = 8;
shift: Integer = 0); external Core_Dll name 'cvLine';
procedure cvLine(img: pCvMat; pt1, pt2: TCvPoint; color: TCvScalar; thickness: Integer = 1; line_type: Integer = 8;
shift: Integer = 0); external Core_Dll name 'cvLine';
procedure cvLine; external Core_Dll;
// procedure cvLine(img: pIplImage; pt1, pt2: TCvPoint; color: TCvScalar; thickness: Integer = 1; line_type: Integer = 8;
// shift: Integer = 0); external Core_Dll name 'cvLine';
// procedure cvLine(img: pCvMat; pt1, pt2: TCvPoint; color: TCvScalar; thickness: Integer = 1; line_type: Integer = 8;
// shift: Integer = 0); external Core_Dll name 'cvLine';
procedure cvAddS; external Core_Dll;
procedure cvCopy; external Core_Dll;
procedure cvCopyImage; external Core_Dll name 'cvCopy';
procedure cvSetZero; external Core_Dll;
procedure cvZero(arr: pIplImage); cdecl; overload; external Core_Dll name 'cvSetZero';
procedure cvZero(arr: pCvMat); cdecl; overload; external Core_Dll name 'cvSetZero';
procedure cvZero; external Core_Dll;
//procedure cvZero(arr: pIplImage); cdecl; overload; external Core_Dll name 'cvSetZero';
//procedure cvZero(arr: pCvMat); cdecl; overload; external Core_Dll name 'cvSetZero';
function CV_RGB;
begin
Result := CvScalar(B, g, r, 0);
end;
procedure cvSave(const filename: pCVChar; const struct_ptr: Pointer; const name: pCVChar; const comment: pCVChar;
attributes: TCvAttrList); external Core_Dll; overload;
procedure cvSave(const filename: pCVChar; const struct_ptr: Pointer; const name: pCVChar = Nil;
const comment: pCVChar = Nil); overload; inline;
procedure cvSave(const filename: pCVChar; const struct_ptr: Pointer; const name: pCVChar; const comment: pCVChar; attributes: TCvAttrList); external Core_Dll; overload;
procedure cvSave(const filename: pCVChar; const struct_ptr: Pointer; const name: pCVChar = Nil; const comment: pCVChar = Nil); overload; inline;
begin
cvSave(filename, struct_ptr, name, comment, ZeroCvAttrList);
end;
@ -2096,11 +2100,11 @@ procedure cvAnd; external Core_Dll;
procedure cvCvtPixToPlane; external Core_Dll name 'cvSplit';
procedure cvCvtPlaneToPix; external Core_Dll name 'cvMerge';
// procedure cvConvertScale; external Core_Dll;
procedure cvConvertScale(const src: pIplImage; dst: pIplImage; scale: Double = 1; shift: Double = 0); cdecl;
external Core_Dll name 'cvConvertScale';
procedure cvConvertScale(const src: pCvMat; dst: pCvMat; scale: Double = 1; shift: Double = 0); cdecl;
external Core_Dll name 'cvConvertScale';
procedure cvConvertScale; external Core_Dll;
// procedure cvConvertScale(const src: pIplImage; dst: pIplImage; scale: Double = 1; shift: Double = 0); cdecl;
// external Core_Dll name 'cvConvertScale';
// procedure cvConvertScale(const src: pCvMat; dst: pCvMat; scale: Double = 1; shift: Double = 0); cdecl;
// external Core_Dll name 'cvConvertScale';
procedure cvScale; external Core_Dll name 'cvConvertScale';
procedure cvCvtScale; external Core_Dll name 'cvConvertScale';
@ -2172,6 +2176,10 @@ function cvCvtSeqToArray; external Core_Dll;
function cvCreateSeq; external Core_Dll;
procedure cvPolyLine; external Core_Dll;
procedure cvStartReadSeq; external Core_Dll;
// procedure cvStartReadSeq(const seq: pCvSeq; reader: pCvSeqReader; reverse: Integer = 0);
// external Core_Dll name 'cvStartReadSeq';
// procedure cvStartReadSeq(const seq: pCvSet; reader: pCvSeqReader; reverse: Integer = 0);
// external Core_Dll name 'cvStartReadSeq';
procedure cvChangeSeqBlock; external Core_Dll;
procedure cvCreateSeqBlock; external Core_Dll;
function cvSeqPush; external Core_Dll;
@ -2189,9 +2197,9 @@ end;
procedure cvXorS; external Core_Dll;
procedure cvEllipse; external Core_Dll;
// #define cvFree(ptr) (cvFree_(*(ptr)), *(ptr)=0)
procedure cvFree;
begin
// #define cvFree(ptr) (cvFree_(*(ptr)), *(ptr)=0)
cvFree_(@ptr);
Pointer(ptr) := nil;
end;
@ -2199,5 +2207,6 @@ end;
function cvInitImageHeader; external Core_Dll;
function cvInitMatHeader; external Core_Dll;
function cvCountNonZero; external Core_Dll;
procedure cvFillConvexPoly; external Core_Dll;
end.

View File

@ -157,5 +157,4 @@
[Exception Log]
EurekaLog Version=7001
DeleteMapAfterCompile=1
Encrypt Password=""
EurekaLog Last Line -->

View File

@ -153,6 +153,9 @@
<Projects Include="MultiDemo\fback\fback_c.dproj">
<Dependencies/>
</Projects>
<Projects Include="MultiDemo\delaunay\delaunay.dproj">
<Dependencies/>
</Projects>
<Projects Include="MultiDemo\MoveDetect\MoveDetect.dproj">
<Dependencies/>
</Projects>
@ -614,6 +617,15 @@
<Target Name="fback_c:Make">
<MSBuild Projects="MultiDemo\fback\fback_c.dproj" Targets="Make"/>
</Target>
<Target Name="delaunay">
<MSBuild Projects="MultiDemo\delaunay\delaunay.dproj"/>
</Target>
<Target Name="delaunay:Clean">
<MSBuild Projects="MultiDemo\delaunay\delaunay.dproj" Targets="Clean"/>
</Target>
<Target Name="delaunay:Make">
<MSBuild Projects="MultiDemo\delaunay\delaunay.dproj" Targets="Make"/>
</Target>
<Target Name="MoveDetect">
<MSBuild Projects="MultiDemo\MoveDetect\MoveDetect.dproj"/>
</Target>
@ -624,13 +636,13 @@
<MSBuild Projects="MultiDemo\MoveDetect\MoveDetect.dproj" Targets="Make"/>
</Target>
<Target Name="Build">
<CallTarget Targets="cv_AddWeighted;cvSetImageROI_cvAddWeighted;cv_And;cv_Canny;cv_CopyMakeBorder;cv_CreateCameraCapture;cv_CreateTrackbar;cv_CreateVideoWriter;cv_CvtColor;cv_CvtPixToPlane;cvErode_cvDilate;cv_FindContours;cv_FloodFill;cv_GetSubRect;cv_HoughCircles;cv_HoughLines2;cv_InRangeS;cv_Laplace;cv_LoadImage;cv_LoadImage2;cv_LoadVideo;cv_MorphologyEx;cv_RandInt;cv_Resize;cv_SetImageROI;cv_SetImageROI2;cv_SetMouseCallback;cv_Smooth;cv_Sobel;cvSplit_cvMerge;cv_Save;cv_Sub;cvThreshold_cvAdaptiveThreshold;cv_Integral;cv_WarpPerspective;cv_MatchShapes;cv_WarpAffine;cv_SnakeImage;cv_CalcOpticalFlowPyrLK;HelloWorld;VideoProcessing;FaceDetect;Stereo;CameraCaptureAndFindContours;HandsDetect;Squares;CameraCalibrate;CameraShift;minarea;fback_c;MoveDetect"/>
<CallTarget Targets="cv_AddWeighted;cvSetImageROI_cvAddWeighted;cv_And;cv_Canny;cv_CopyMakeBorder;cv_CreateCameraCapture;cv_CreateTrackbar;cv_CreateVideoWriter;cv_CvtColor;cv_CvtPixToPlane;cvErode_cvDilate;cv_FindContours;cv_FloodFill;cv_GetSubRect;cv_HoughCircles;cv_HoughLines2;cv_InRangeS;cv_Laplace;cv_LoadImage;cv_LoadImage2;cv_LoadVideo;cv_MorphologyEx;cv_RandInt;cv_Resize;cv_SetImageROI;cv_SetImageROI2;cv_SetMouseCallback;cv_Smooth;cv_Sobel;cvSplit_cvMerge;cv_Save;cv_Sub;cvThreshold_cvAdaptiveThreshold;cv_Integral;cv_WarpPerspective;cv_MatchShapes;cv_WarpAffine;cv_SnakeImage;cv_CalcOpticalFlowPyrLK;HelloWorld;VideoProcessing;FaceDetect;Stereo;CameraCaptureAndFindContours;HandsDetect;Squares;CameraCalibrate;CameraShift;minarea;fback_c;delaunay;MoveDetect"/>
</Target>
<Target Name="Clean">
<CallTarget Targets="cv_AddWeighted:Clean;cvSetImageROI_cvAddWeighted:Clean;cv_And:Clean;cv_Canny:Clean;cv_CopyMakeBorder:Clean;cv_CreateCameraCapture:Clean;cv_CreateTrackbar:Clean;cv_CreateVideoWriter:Clean;cv_CvtColor:Clean;cv_CvtPixToPlane:Clean;cvErode_cvDilate:Clean;cv_FindContours:Clean;cv_FloodFill:Clean;cv_GetSubRect:Clean;cv_HoughCircles:Clean;cv_HoughLines2:Clean;cv_InRangeS:Clean;cv_Laplace:Clean;cv_LoadImage:Clean;cv_LoadImage2:Clean;cv_LoadVideo:Clean;cv_MorphologyEx:Clean;cv_RandInt:Clean;cv_Resize:Clean;cv_SetImageROI:Clean;cv_SetImageROI2:Clean;cv_SetMouseCallback:Clean;cv_Smooth:Clean;cv_Sobel:Clean;cvSplit_cvMerge:Clean;cv_Save:Clean;cv_Sub:Clean;cvThreshold_cvAdaptiveThreshold:Clean;cv_Integral:Clean;cv_WarpPerspective:Clean;cv_MatchShapes:Clean;cv_WarpAffine:Clean;cv_SnakeImage:Clean;cv_CalcOpticalFlowPyrLK:Clean;HelloWorld:Clean;VideoProcessing:Clean;FaceDetect:Clean;Stereo:Clean;CameraCaptureAndFindContours:Clean;HandsDetect:Clean;Squares:Clean;CameraCalibrate:Clean;CameraShift:Clean;minarea:Clean;fback_c:Clean;MoveDetect:Clean"/>
<CallTarget Targets="cv_AddWeighted:Clean;cvSetImageROI_cvAddWeighted:Clean;cv_And:Clean;cv_Canny:Clean;cv_CopyMakeBorder:Clean;cv_CreateCameraCapture:Clean;cv_CreateTrackbar:Clean;cv_CreateVideoWriter:Clean;cv_CvtColor:Clean;cv_CvtPixToPlane:Clean;cvErode_cvDilate:Clean;cv_FindContours:Clean;cv_FloodFill:Clean;cv_GetSubRect:Clean;cv_HoughCircles:Clean;cv_HoughLines2:Clean;cv_InRangeS:Clean;cv_Laplace:Clean;cv_LoadImage:Clean;cv_LoadImage2:Clean;cv_LoadVideo:Clean;cv_MorphologyEx:Clean;cv_RandInt:Clean;cv_Resize:Clean;cv_SetImageROI:Clean;cv_SetImageROI2:Clean;cv_SetMouseCallback:Clean;cv_Smooth:Clean;cv_Sobel:Clean;cvSplit_cvMerge:Clean;cv_Save:Clean;cv_Sub:Clean;cvThreshold_cvAdaptiveThreshold:Clean;cv_Integral:Clean;cv_WarpPerspective:Clean;cv_MatchShapes:Clean;cv_WarpAffine:Clean;cv_SnakeImage:Clean;cv_CalcOpticalFlowPyrLK:Clean;HelloWorld:Clean;VideoProcessing:Clean;FaceDetect:Clean;Stereo:Clean;CameraCaptureAndFindContours:Clean;HandsDetect:Clean;Squares:Clean;CameraCalibrate:Clean;CameraShift:Clean;minarea:Clean;fback_c:Clean;delaunay:Clean;MoveDetect:Clean"/>
</Target>
<Target Name="Make">
<CallTarget Targets="cv_AddWeighted:Make;cvSetImageROI_cvAddWeighted:Make;cv_And:Make;cv_Canny:Make;cv_CopyMakeBorder:Make;cv_CreateCameraCapture:Make;cv_CreateTrackbar:Make;cv_CreateVideoWriter:Make;cv_CvtColor:Make;cv_CvtPixToPlane:Make;cvErode_cvDilate:Make;cv_FindContours:Make;cv_FloodFill:Make;cv_GetSubRect:Make;cv_HoughCircles:Make;cv_HoughLines2:Make;cv_InRangeS:Make;cv_Laplace:Make;cv_LoadImage:Make;cv_LoadImage2:Make;cv_LoadVideo:Make;cv_MorphologyEx:Make;cv_RandInt:Make;cv_Resize:Make;cv_SetImageROI:Make;cv_SetImageROI2:Make;cv_SetMouseCallback:Make;cv_Smooth:Make;cv_Sobel:Make;cvSplit_cvMerge:Make;cv_Save:Make;cv_Sub:Make;cvThreshold_cvAdaptiveThreshold:Make;cv_Integral:Make;cv_WarpPerspective:Make;cv_MatchShapes:Make;cv_WarpAffine:Make;cv_SnakeImage:Make;cv_CalcOpticalFlowPyrLK:Make;HelloWorld:Make;VideoProcessing:Make;FaceDetect:Make;Stereo:Make;CameraCaptureAndFindContours:Make;HandsDetect:Make;Squares:Make;CameraCalibrate:Make;CameraShift:Make;minarea:Make;fback_c:Make;MoveDetect:Make"/>
<CallTarget Targets="cv_AddWeighted:Make;cvSetImageROI_cvAddWeighted:Make;cv_And:Make;cv_Canny:Make;cv_CopyMakeBorder:Make;cv_CreateCameraCapture:Make;cv_CreateTrackbar:Make;cv_CreateVideoWriter:Make;cv_CvtColor:Make;cv_CvtPixToPlane:Make;cvErode_cvDilate:Make;cv_FindContours:Make;cv_FloodFill:Make;cv_GetSubRect:Make;cv_HoughCircles:Make;cv_HoughLines2:Make;cv_InRangeS:Make;cv_Laplace:Make;cv_LoadImage:Make;cv_LoadImage2:Make;cv_LoadVideo:Make;cv_MorphologyEx:Make;cv_RandInt:Make;cv_Resize:Make;cv_SetImageROI:Make;cv_SetImageROI2:Make;cv_SetMouseCallback:Make;cv_Smooth:Make;cv_Sobel:Make;cvSplit_cvMerge:Make;cv_Save:Make;cv_Sub:Make;cvThreshold_cvAdaptiveThreshold:Make;cv_Integral:Make;cv_WarpPerspective:Make;cv_MatchShapes:Make;cv_WarpAffine:Make;cv_SnakeImage:Make;cv_CalcOpticalFlowPyrLK:Make;HelloWorld:Make;VideoProcessing:Make;FaceDetect:Make;Stereo:Make;CameraCaptureAndFindContours:Make;HandsDetect:Make;Squares:Make;CameraCalibrate:Make;CameraShift:Make;minarea:Make;fback_c:Make;delaunay:Make;MoveDetect:Make"/>
</Target>
<Import Project="$(BDS)\Bin\CodeGear.Group.Targets" Condition="Exists('$(BDS)\Bin\CodeGear.Group.Targets')"/>
</Project>