Update to 2.0.0 tree from current Fremantle build
[opencv] / interfaces / swig / python / cvshadow.cpp
1 #include <cxcore.h>
2 #include <cv.h>
3 #include <stdio.h>
4 #include "cvshadow.h"
5
6 CvArr * cvCvtSeqToArray_Shadow( const CvSeq* seq, CvArr * elements, CvSlice slice){
7         CvMat stub, *mat=(CvMat *)elements;
8         if(!CV_IS_MAT(mat)){
9             mat = cvGetMat(elements, &stub);
10         }
11         cvCvtSeqToArray( seq, mat->data.ptr, slice );
12         return elements;
13     }
14
15 double cvArcLength_Shadow( const CvSeq * seq, CvSlice slice, int is_closed){
16     return cvArcLength( seq, slice, is_closed );
17 }
18 double cvArcLength_Shadow( const CvArr * arr, CvSlice slice, int is_closed){
19     return cvArcLength( arr, slice, is_closed );
20 }
21
22 void cvMoments_Shadow( const CvSeq * seq, CvMoments * moments, int binary ){
23         cvMoments( seq, moments, binary );
24 }
25
26 void cvMoments_Shadow( const CvArr * seq, CvMoments * moments, int binary ){
27         cvMoments( seq, moments, binary );
28 }
29
30
31 CvTypedSeq<CvRect> * cvHaarDetectObjects_Shadow( const CvArr* image, CvHaarClassifierCascade* cascade,
32         CvMemStorage* storage, double scale_factor, int min_neighbors, int flags,
33         CvSize min_size )
34 {
35         return (CvTypedSeq<CvRect> *) cvHaarDetectObjects( image, cascade, storage, scale_factor,
36                                                                 min_neighbors, flags, min_size);
37 }
38
39 CvTypedSeq<CvConnectedComp> *  cvSegmentMotion_Shadow( const CvArr* mhi, CvArr* seg_mask, CvMemStorage* storage,
40                                                                 double timestamp, double seg_thresh ){
41     return (CvTypedSeq<CvConnectedComp> *) cvSegmentMotion( mhi, seg_mask, storage, timestamp, seg_thresh );
42 }
43
44 CvTypedSeq<CvPoint> * cvApproxPoly_Shadow( const void* src_seq, int header_size, CvMemStorage* storage,
45                                     int method, double parameter, int parameter2)
46 {
47     return (CvTypedSeq<CvPoint> *) cvApproxPoly( src_seq, header_size, storage, method, parameter, parameter2 );
48 }
49
50 // Always return a new Mat of indices
51 CvMat * cvConvexHull2_Shadow( const CvArr * points, int orientation, int return_points){
52         CvMat * hull=0;
53         CvMat * points_mat=(CvMat *) points;
54         CvSeq * points_seq=(CvSeq *) points;
55         int npoints, type;
56
57         CV_FUNCNAME("cvConvexHull2");
58
59         __BEGIN__;
60
61         if(CV_IS_MAT(points_mat)){
62                 npoints = MAX(points_mat->rows, points_mat->cols);
63                 type = return_points ? points_mat->type : CV_32S;
64         }
65         else if(CV_IS_SEQ(points_seq)){
66                 npoints = points_seq->total;
67                 type = return_points ? CV_SEQ_ELTYPE(points_seq) : 1;
68         }
69         else{
70                 CV_ERROR(CV_StsBadArg, "points must be a CvSeq or CvMat");
71         }
72         CV_CALL( hull=cvCreateMat(1,npoints,type) );
73         CV_CALL( cvConvexHull2(points, hull, orientation, return_points) );
74
75         __END__;
76         return hull;
77 }
78 std::vector<CvPoint> cvSnakeImage_Shadow( const CvMat * image, std::vector<CvPoint>  points,
79                 std::vector<float> alpha, std::vector<float> beta,
80                 std::vector<float> gamma,
81                 CvSize win, CvTermCriteria criteria, int calc_gradient ){
82         IplImage ipl_stub;
83         cvSnakeImage( cvGetImage(image, &ipl_stub), &(points[0]), points.size(),
84                               &((alpha)[0]), &((beta)[0]), &((gamma)[0]),
85                                   (alpha.size()>1 && beta.size()>1 && gamma.size()>1 ? CV_ARRAY : CV_VALUE),
86                                   win, criteria, calc_gradient );
87         return points;
88 }