mex interface for opencv library
Collection of mex functions for OpenCV library
All you need to do is to add your mex source file in
src/+cv/. If you want to add a mex function called myfunc, create
src/+cv/myfunc.cpp. The minimum contents of the myfunc.cpp would look like this:
This example simply copies an input to cv::Mat object and then copies again to the output. Notice how the
MxArray class provided by mexopencv converts mxArray to cv::Mat object. Of course you would want to do something more with the object. Once you create a file, type
cv.make to build your new function. The compiled mex function will be located inside
+cv/ and accessible through
cv.myfunc within matlab.
MxArraay.hpp for the complete list of conversion API.
If you rather want to develop a matlab function that internally calls a mex function, make use of the
+cv/private directory. Any function placed under private directory is only accessible from
+cv/ directory. So, for example, when you want to design a matlab class that wraps the various behavior of the mex function, define your class at
+cv/MyClass.m and develop a mex function dedicated for that class in
src/+cv/private/MyClass_.cpp . Inside of
+cv/MyClass.m, you can call
MyClass_() without cv namescope.
Optionally, you can add a testing script for your new function. The testing convention in mexopencv is that testing scripts are all written as a static function in a matlab class. For example,
test/unit_tests/TestFilter2D.m is a class that describes test cases for filter2d function. Inside of the class, a couple of test cases are written as a static function whose name starts with 'test'.
If there is such a class inside
test/unit_tests/ , typing
make test would invoke all test cases and show your result. Use
test/ directory to place any resource file necessary for testing. An example of testing class is shown below:
In Windows, add path to the
test directory and invoke
UnitTest to run all the test routines.
You can create a Matlab help documentation for mex function by having the same file with '.m' extension. For example, on linux 64-bit architecture, the help file for
filter2D.mexa64 would be
filter2D.m. Inside the help file should be only matlab comments. An example is shown below: