|
mexopencv
3.4.1
MEX interface for OpenCV library
|
Collection of MATLAB MEX functions for OpenCV library
http://kyamagu.github.io/mexopencv/
All you need to do is to add your C++ 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 mexopencv.make() to build your new function. The compiled MEX function will be located inside +cv/ and accessible through cv.myfunc within MATLAB.
The mexopencv.hpp header includes a class MxArray to manipulate mxArray objects. Mostly this class is used to convert between OpenCV data types and mxArray .
Check MxArray.hpp for the complete list of the conversion API.
If you rather want to develop a MATLAB class 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 the cv namespace. In mexopencv, this is usually used to exposed C++ classes as MATLAB classes.
You can optionally 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 cv::filter2D function. Inside of the class, a couple of test cases are written as static functions whose name start 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 files necessary for testing. An example of testing class is shown below:
In Windows, add the test directory to the MATLAB path and invoke UnitTest to run all the test routines.
You can create a MATLAB help documentation for a MEX function by having the same file with '.m' extension. For example, a help file for filter2D.mex* would be filter2D.m. The help file should only contain MATLAB comments. An example is shown below:
1.8.14