unit imgproc_c; {$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} {$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} {$WARN SYMBOL_DEPRECATED OFF} {$WARN SYMBOL_PLATFORM OFF} {$WARN UNIT_PLATFORM OFF} {$WARN UNSAFE_TYPE OFF} {$WARN UNSAFE_CODE OFF} {$WARN UNSAFE_CAST OFF} interface (* ** 'C2PTypes.pas' declares external windows data types for the conversion purposes. ** It's created by the CtoPas converter and saved under ** "\Program Files\Common Files\AlGun Shared\CToPas 2.0\P_Files" folder. ** Consult the Windows and Delphi help files for more information about defined data types *) uses Core.types_c, imgproc.types_c; (* M/////////////////////////////////////////////////////////////////////////////////////// // // 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. // // // License Agreement // For Open Source Computer Vision Library // // Copyright (C) 2000-2008, Intel Corporation, all rights reserved. // Copyright (C) 2009, Willow Garage Inc., 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 the copyright holders 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. // //M*/ {$ifndef __OPENCV_IMGPROC_IMGPROC_C_H__} {$define __OPENCV_IMGPROC_IMGPROC_C_H__} {$HPPEMIT '#include 'opencv2/core/core_c.h''} {$HPPEMIT '#include 'opencv2/imgproc/types_c.h''} {$ifdef __cplusplus} //extern "C" { {$endif} (*********************** Background statistics accumulation **************************** *) (* Adds image to accumulator *) // CVAPI(procedure)cvAcc(var Adds squared image to accumulator * ) // CVAPI(procedure)cvSquareAcc(CvArr * image: v1: 0)): CvArr; (var sqsum: CvArr; var Adds a product of two images to accumulator * ) // CVAPI(procedure)cvMultiplyAcc(CvArr * image1: unction mask CV_DEFAULT(v1: 0)): CvArr; (; // var image2: CvArr; var acc: CvArr; var Adds image to accumulator with weights: acc = acc * (1 - alpha) + image * alpha * ) // CVAPI(procedure)cvRunningAvg(CvArr * image: unction mask CV_DEFAULT(v1: 0)): CvArr; (; // var acc: CvArr;alpha: Double; // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * \ * image Processing * * * // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ) { /* Copies source 2D array inside of the larger destination array and makes a border of the specified type (IPL_BORDER_*) around the copied area. */ CVAPI(void) cvCopyMakeBorder( const CvArr* src, CvArr* dst, CvPoint offset, int bordertype, CvScalar value CV_DEFAULT(cvScalarAll(0))); } procedure cvCopyMakeBorder( { } const src: pIplImage; { } dst: pIplImage; { } offset: TCvPoint; { } bordertype: Integer; { } value: TCvScalar { * cvScalarAll(0) * } ); cdecl; // Smoothes array (removes noise) * ) // CVAPI( // procedure)cvSmooth(CvArr * src: CvScalar value CV_DEFAULT(v1: 0))): Integer; (; var dst: CvArr; // smoothtype CV_DEFAULT(v1: 3: // function); size2 CV_DEFAULT(0): Integer; sigma1 CV_DEFAULT(0): // function; sigma2 CV_DEFAULT(0): Double): Integer; { // Smoothes array (removes noise) CVAPI(void) cvSmooth( const CvArr* src, CvArr* dst, int smoothtype CV_DEFAULT(CV_GAUSSIAN), int size1 CV_DEFAULT(3), int size2 CV_DEFAULT(0), double sigma1 CV_DEFAULT(0), double sigma2 CV_DEFAULT(0)); } procedure cvSmooth( { } const src: pIplImage; { } dst: pIplImage; { } smoothtype: Integer = CV_GAUSSIAN; { } size1: Integer = 3; { } size2: Integer = 0; { } sigma1: double = 0; { } sigma2: double = 0); cdecl; // (* Convolves the image with the kernel *) // CVAPI( // procedure)cvFilter2D(v1: CvPoint(-1; // { Finds integral image: SUM(X,Y) = sum(x. After that sum of histogram bins is equal to ; // factor: Double); // // // (* Clear all histogram bins that are below the threshold *) // CVAPI(procedure) cvThreshHist(var hist: CvHistogram; threshold: Double); // // // (* Compares two histogram *) // CVAPI(Double) cvCompareHist( CvHistogram* hist1, // CvHistogram* hist2, // Integer method); // // (* Copies one histogram to another. Destination histogram is created if // the destination cPointer is 0 *) // CVAPI(procedure) cvCopyHist(var src: CvHistogram; dst: array of CvHistogram); // // // (* Calculates bayesian probabilistic histograms // (each or src and dst is an cArray of histograms *) // CVAPI(procedure) cvCalcBayesianProb( // src: array of CvHistogram; // number: Integer; // dst: array of CvHistogram); // // (* Calculates array histogram *) // CVAPI(procedure) cvCalcArrHist( // image: array of v1: 0)): Integer;CV_INLINE CV_INLINE procedure cvCalcHist( IplImage; // var hist: CvHistogram; // accumulate CV_DEFAULT(0): Integer; // var mask CV_DEFAULT(0) )begin cvCalcArrHist( (CvArr*)image: vArr; // v5: hist; // v6: accumulate; // var Calculates back project *)CVAPI(procedure) cvCalcArrBackProject( CvArr** image: mask ): CvArr; end;(; // var dst: CvArr; // var hist: vHistogram); /// / >> Following declaration is a macro definition! // const cvCalcBackProject(image, dst, hist) cvCalcArrBackProject((CvArr; // // // (* Does some sort of template matching but compares histograms of // template and each window location *) // CVAPI(procedure) cvCalcArrBackProjectPatch( // image: array of CvArr; // var dst: CvArr; // range: CvSize; // var hist: CvHistogram; // method: Integer; // factor: Double); /// / >> Following declaration is a macro definition! // const cvCalcBackProjectPatch( image, dst, range, hist, method, factor ) cvCalcArrBackProjectPatch( (CvArr; // // // (* calculates probabilistic density (divides one histogram by another) *) // CVAPI(procedure) cvCalcProbDensity( // var equalizes histogram of 8-bit single-channel image *)CVAPI(procedure) cvEqualizeHist( CvArr* src: v1: 255)): Double;(; // var dst: CvArr); // // // (* Applies distance transform to binary image *) // CVAPI(procedure) cvDistTransform( // 3: v1:); // mask CV_DEFAULT(0): unction; // labels CV_DEFAULT(0): function; // labelType CV_DEFAULT(CV_DIST_LABEL_CCOMP): Integer): Integer; // // // (* Applies fixed-level threshold to grayscale image. // This is a basic operation applied before retrieving contours *) // CVAPI(double) cvThreshold( const CvArr* src, CvArr* dst, double threshold, double max_value, int threshold_type ); function cvThreshold(const src, dst: pIplImage; threshold, max_value: double; threshold_type: Integer): double; cdecl; { /* Applies adaptive threshold to grayscale image. The two parameters for methods CV_ADAPTIVE_THRESH_MEAN_C and CV_ADAPTIVE_THRESH_GAUSSIAN_C are: neighborhood size (3, 5, 7 etc.), and a constant subtracted from mean (...,-3,-2,-1,0,1,2,3,...) */ CVAPI(void) cvAdaptiveThreshold( const CvArr* src, CvArr* dst, double max_value, int adaptive_method CV_DEFAULT(CV_ADAPTIVE_THRESH_MEAN_C), int threshold_type CV_DEFAULT(CV_THRESH_BINARY), int block_size CV_DEFAULT(3), double param1 CV_DEFAULT(5)); } procedure cvAdaptiveThreshold( { } const src: pIplImage; { } dst: pIplImage; { } max_value: double; { } adaptive_method: Integer = CV_ADAPTIVE_THRESH_MEAN_C; { } threshold_type: Integer = CV_THRESH_BINARY; { } block_size: Integer = 3; { } param1: double = 5); cdecl; { /* Fills the connected component until the color difference gets large enough */ CVAPI(void) cvFloodFill( CvArr* image, CvPoint seed_point, CvScalar new_val, CvScalar lo_diff CV_DEFAULT(cvScalarAll(0)), CvScalar up_diff CV_DEFAULT(cvScalarAll(0)), CvConnectedComp* comp CV_DEFAULT(NULL), int flags CV_DEFAULT(4), CvArr* mask CV_DEFAULT(NULL)); } procedure cvFloodFill( { } image: pIplImage; { } seed_point: TCvPoint; { } new_val: TCvScalar; { } lo_diff: TCvScalar { * cvScalarAll(0) * }; { } up_diff: TCvScalar { * cvScalarAll(0) * }; { } comp: pCvConnectedComp = NIL; { } flags: Integer = 4; { } mask: PCvArr = NIL); cdecl; // **************************************************************************************** // * Feature detection * // **************************************************************************************** { /* Runs canny edge detector */ CVAPI(void) cvCanny( const CvArr* image, CvArr* edges, double threshold1, double threshold2, int aperture_size CV_DEFAULT(3) ); } procedure cvCanny(const image: pIplImage; edges: pIplImage; threshold1: double; threshold2: double; aperture_size: Integer = 3); cdecl; // (* Runs canny edge detector *) CVAPI( // procedure)cvCanny(CvArr * image: array of // function flags CV_DEFAULT(v1: 0)): Integer; (; var edges: CvArr; threshold1: Double; // threshold2: Double; var Calculates constraint image for corner detection Dx xor 2 * Dyy + Dxx * // Dy xor 2 - 2 * Dx * Dy * Dxy.Applying threshold to the cResult gives coordinates of // corners * ) // CVAPI( // procedure)cvPreCornerDetect(CvArr * image: // function aperture_size CV_DEFAULT(v1: 3)): Integer; (; var corners: CvArr; // var Calculates eigen values and vectors of 2 x2 gradient covariation matrix at every image // pixel * )CVAPI( // procedure)cvCornerEigenValsAndVecs(CvArr * image: // function aperture_size CV_DEFAULT(v1: 3)): Integer; (; var eigenvv: CvArr; block_size: // function; var Calculates minimal eigenvalue for 2 x2 gradient covariation matrix at every image // pixel * )CVAPI( // procedure)cvCornerMinEigenVal(CvArr * image: Integer aperture_size CV_DEFAULT(v1: 3)): Integer; (; // var eigenval: CvArr; block_size: // function; var Harris corner detector: Calculates det(M) - k * (trace(M) xor 2) // : Integer aperture_size CV_DEFAULT(v1: 3)): Integer; (; var)CVAPI( // procedure)cvCornerHarris(CvArr * image: where M is 2 x2 gradient covariation matrix for each pixel; // var harris_responce: CvArr; block_size: // function; var Adjust corner position using some sort of gradient search * )CVAPI( // procedure)cvFindCornerSubPix(CvArr * image: Integer aperture_size CV_DEFAULT(v1: 0.04)): Integer; (; // var corners: CvPoint2D32f; count: Integer; win: CvSize; zero_zone: CvSize; // var Finds a sparse set of points within the selected region that seem to be easy to track * )CVAPI( // procedure)cvGoodFeaturesToTrack(CvArr * image: cvTermCriteria criteria): Double; (; // var eig_image: CvArr; var temp_image: CvArr; var corners: CvPoint2D32f; var corner_count: Integer; // quality_level: Double; min_distance: Double; var mask CV_DEFAULT(0): vArr; // block_size CV_DEFAULT(v1: 0: // function); k CV_DEFAULT(0.04): // function): Integer; // // (* Finds lines on binary image using one of several methods. // line_storage is either memory storage or 1 x CvMat, its // number of columns is changed by the cFunction. // method is one of CV_HOUGH_*; // rho, theta and threshold are used for each of those methods; // param1 ~ line length, param2 ~ line gap - for probabilistic, // param1 ~ srn, param2 ~ stn - for multi-scale *) // CVAPI(CvSeq)cvHoughLines2(CvArr * image, Pointer line_storage, Integer method, Double rho, // Double theta, Integer threshold, Double param1 CV_DEFAULT(0), Double param2 CV_DEFAULT(0) // ): Double; { /* Finds lines on binary image using one of several methods. line_storage is either memory storage or 1 x CvMat, its number of columns is changed by the function. method is one of CV_HOUGH_*; rho, theta and threshold are used for each of those methods; param1 ~ line length, param2 ~ line gap - for probabilistic, param1 ~ srn, param2 ~ stn - for multi-scale */ CVAPI(CvSeq*) cvHoughLines2( CvArr* image, void* line_storage, int method, double rho, double theta, int threshold, double param1 CV_DEFAULT(0), double param2 CV_DEFAULT(0)); } function cvHoughLines2( { } image: pIplImage; { } line_storage: Pointer; { } method: Integer; { } rho: double; { } theta: double; { } threshold: Integer; { } param1: double = 0; { } param2: double = 0): PCvSeq; cdecl; { /* Finds circles in the image */ CVAPI(CvSeq*) cvHoughCircles( CvArr* image, void* circle_storage, int method, double dp, double min_dist, double param1 CV_DEFAULT(100), double param2 CV_DEFAULT(100), int min_radius CV_DEFAULT(0), int max_radius CV_DEFAULT(0)); } function cvHoughCircles( { } image: pIplImage; { } circle_storage: Pointer; { } method: Integer; { } dp: double; { } min_dist: double; { } param1: double = 100; { } param2: double = 100; { } min_radius: Integer = 0; { } max_radius: Integer = 0): PCvSeq; cdecl; // (* Fits a line into set of 2d or 3d points in a robust way (M-estimator technique) *) // CVAPI( // procedure)cvFitLine(CvArr * points, Integer dist_type, Double param, Double reps, Double aeps, // Single * line): Double; // // {$IFDEF __cplusplus} // end; // {$ENDIF} // {$ENDIF} implementation const {$IFDEF DEBUG} DllName = 'opencv_imgproc243d.dll'; {$ELSE} DllName = 'opencv_imgproc243.dll'; {$ENDIF} procedure cvCvtColor; external DllName; function cvThreshold; external DllName; procedure cvSmooth; external DllName; procedure cvResize; external DllName; function cvCreateStructuringElementEx; external DllName; procedure cvErode; external DllName; procedure cvDilate; external DllName; procedure cvReleaseStructuringElement; external DllName; procedure cvMorphologyEx; external DllName; procedure cvFloodFill; external DllName; procedure cvAdaptiveThreshold; external DllName; procedure cvCopyMakeBorder; external DllName; procedure cvSobel; external DllName; procedure cvLaplace; external DllName; procedure cvCanny; external DllName; function cvHoughLines2; external DllName; function cvHoughCircles; external DllName; procedure cvIntegral; external DllName; function cvFindContours; external DllName; function cvApproxPoly; external DllName; end.