Move the sources to trunk
[opencv] / interfaces / swig / python / ml.i
1 /*M///////////////////////////////////////////////////////////////////////////////////////
2 //
3 //  IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING.
4 //
5 //  By downloading, copying, installing or using the software you agree to this license.
6 //  If you do not agree to this license, do not download, install,
7 //  copy or use the software.
8 //
9 //
10 //                        Intel License Agreement
11 //                For Open Source Computer Vision Library
12 //
13 // Copyright (C) 2000, Intel Corporation, all rights reserved.
14 // Third party copyrights are property of their respective owners.
15 //
16 // Redistribution and use in source and binary forms, with or without modification,
17 // are permitted provided that the following conditions are met:
18 //
19 //   * Redistribution's of source code must retain the above copyright notice,
20 //     this list of conditions and the following disclaimer.
21 //
22 //   * Redistribution's in binary form must reproduce the above copyright notice,
23 //     this list of conditions and the following disclaimer in the documentation
24 //     and/or other materials provided with the distribution.
25 //
26 //   * The name of Intel Corporation may not be used to endorse or promote products
27 //     derived from this software without specific prior written permission.
28 //
29 // This software is provided by the copyright holders and contributors "as is" and
30 // any express or implied warranties, including, but not limited to, the implied
31 // warranties of merchantability and fitness for a particular purpose are disclaimed.
32 // In no event shall the Intel Corporation or contributors be liable for any direct,
33 // indirect, incidental, special, exemplary, or consequential damages
34 // (including, but not limited to, procurement of substitute goods or services;
35 // loss of use, data, or profits; or business interruption) however caused
36 // and on any theory of liability, whether in contract, strict liability,
37 // or tort (including negligence or otherwise) arising in any way out of
38 // the use of this software, even if advised of the possibility of such damage.
39 //
40 //M*/
41
42
43 // 2004-03-16, Mark Asbach       <asbach@ient.rwth-aachen.de>
44 //             Institute of Communications Engineering, RWTH Aachen University
45
46 %module(package="opencv") ml
47
48 %{
49   #include <ml.h>
50         #include <cxtypes.h>
51         #include <cv.h>
52         #include <highgui.h>
53         #include "pyhelpers.h"
54         #include "pycvseq.hpp"
55 %}
56
57 // include python-specific files
58 %include "./nointpb.i"
59 %include "./pytypemaps.i"
60 %include "exception.i"
61
62 %import "../general/cv.i"
63
64 %include "../general/memory.i"
65 %include "../general/typemaps.i"
66
67 %newobject cvCreateCNNConvolutionLayer;
68 %newobject cvCreateCNNSubSamplingLayer;
69 %newobject cvCreateCNNFullConnectLayer;
70 %newobject cvCreateCNNetwork;
71 %newobject cvTrainCNNClassifier;
72
73 %newobject cvCreateCrossValidationEstimateModel;
74
75
76 %pythoncode 
77 %{
78
79 __doc__ = """Machine Learning
80
81 The Machine Learning library (ML) is a set of classes and functions for 
82 statistical classification, regression and clustering of data.
83
84 Most of the classification and regression algorithms are implemented as classes. 
85 As the algorithms have different sets of features (like ability to handle missing 
86 measurements, or categorical input variables etc.), there is only little common 
87 ground between the classes. This common ground is defined by the class CvStatModel 
88 that all the other ML classes are derived from.
89
90 This wrapper was semi-automatically created from the C/C++ headers and therefore
91 contains no Python documentation. Because all identifiers are identical to their
92 C/C++ counterparts, you can consult the standard manuals that come with OpenCV.
93 """
94
95 %}
96
97 %extend CvEM
98 {
99    PyObject * get_covs()
100    {
101        CvMat ** pointers = const_cast<CvMat **> (self->get_covs());
102        int n = self->get_nclusters();
103
104        PyObject * result = PyTuple_New(n);
105        for (int i=0; i<n; ++i)
106        {
107            PyObject * obj = SWIG_NewPointerObj(pointers[i], $descriptor(CvMat *), 0);
108            PyTuple_SetItem(result, i, obj);
109            //Py_DECREF(obj);
110        }
111        
112        return result;
113    }
114 }
115
116 %ignore CvEM::get_covs;
117
118 %include "ml.h"