@@ -42,7 +42,7 @@ to get help on the purpose and call signature of a particular method, or
...
@@ -42,7 +42,7 @@ to get help on the purpose and call signature of a particular method, or
to get general help regarding the OpenCV bindings. If you ever run into issues with the bindings
to get general help regarding the OpenCV bindings. If you ever run into issues with the bindings
cv.buildInformation();
cv.buildInformation();
will produce a printout of diagnostic information pertaining to your particular build of OS, OpenCV and Matlab. It is useful to submit this information alongside a bug report to the OpenCV team.
will produce a printout of diagnostic information pertaining to your particular build of OS, OpenCV and Matlab. It is useful to submit this information alongside a bug report to the OpenCV team.
...
@@ -52,46 +52,48 @@ The Matlab bindings come with a set of utilities to help you quickly write your
...
@@ -52,46 +52,48 @@ The Matlab bindings come with a set of utilities to help you quickly write your
The first thing you need to learn how to do is write a mex-file with Matlab constructs. Following is a brief example:
The first thing you need to learn how to do is write a mex-file with Matlab constructs. Following is a brief example:
// include useful constructs
```cpp
// this automatically includes opencv core.hpp and mex.h)
// include useful constructs
#include <opencv2/matlab/bridge.hpp>
// this automatically includes opencv core.hpp and mex.h)
using namespace cv;
#include <opencv2/matlab/bridge.hpp>
using namespace std;
usingnamespacecv;
usingnamespacestd;
// define the mex gateway
void mexFunction(int nlhs, mxArray* plhs[],
// define the mex gateway
int nrhs, const mxArray* prhs[]) {
voidmexFunction(intnlhs,mxArray*plhs[],
intnrhs,constmxArray*prhs[]){
// claim the inputs into scoped management
MxArrayVector raw_inputs(prhs, prhs+nrhs);
// claim the inputs into scoped management
MxArrayVectorraw_inputs(prhs,prhs+nrhs);
// add an argument parser to automatically handle basic options
ArgumentParser parser("my function");
// add an argument parser to automatically handle basic options
There are a couple of important things going on in this example. Firstly, you need to include `<opencv2/matlab/bridge.hpp>` to enable the bridging capabilities. Once you've done this, you get some nice utilities for free. `MxArray` is a class that wraps Matlab's `mxArray*` class in an OOP-style interface. `ArgumentParser` is a class that handles default, optional and named arguments for you, along with multiple possible calling syntaxes. Finally, `Bridge` is a class that allows bidirectional conversions between OpenCV/std and Matlab types.
There are a couple of important things going on in this example. Firstly, you need to include `<opencv2/matlab/bridge.hpp>` to enable the bridging capabilities. Once you've done this, you get some nice utilities for free. `MxArray` is a class that wraps Matlab's `mxArray*` class in an OOP-style interface. `ArgumentParser` is a class that handles default, optional and named arguments for you, along with multiple possible calling syntaxes. Finally, `Bridge` is a class that allows bidirectional conversions between OpenCV/std and Matlab types.
Once you have written your file, it can be compiled with the provided mex utility:
Once you have written your file, it can be compiled with the provided mex utility:
cv.mex('my_function.cpp');
cv.mex('my_function.cpp');
This utility automatically links in all of the necessary OpenCV libraries to make your function work.
This utility automatically links in all of the necessary OpenCV libraries to make your function work.