mexopencv  3.4.1
MEX interface for OpenCV library
anisotropicDiffusion.cpp
Go to the documentation of this file.
1 
8 #include "mexopencv.hpp"
9 #include "opencv2/ximgproc.hpp"
10 using namespace std;
11 using namespace cv;
12 using namespace cv::ximgproc;
13 
21 void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[])
22 {
23  // Check the number of arguments
24  nargchk(nrhs>=1 && (nrhs%2)==1 && nlhs<=1);
25 
26  // Argument vector
27  vector<MxArray> rhs(prhs, prhs+nrhs);
28 
29  // Option processing
30  float alpha = 1.0f; // 1.0/7
31  float K = 0.02f;
32  int niters = 10; // 1
33  for (int i=1; i<nrhs; i+=2) {
34  string key(rhs[i].toString());
35  if (key == "Alpha")
36  alpha = rhs[i+1].toFloat();
37  else if (key == "K")
38  K = rhs[i+1].toFloat();
39  else if (key == "Iterations")
40  niters = rhs[i+1].toInt();
41  else
42  mexErrMsgIdAndTxt("mexopencv:error",
43  "Unrecognized option %s", key.c_str());
44  }
45 
46  // Process
47  Mat src(rhs[0].toMat(CV_8U)), dst;
48  anisotropicDiffusion(src, dst, alpha, K, niters);
49  plhs[0] = MxArray(dst);
50 }
#define CV_8U
STL namespace.
struct mxArray_tag mxArray
Forward declaration for mxArray.
Definition: matrix.h:259
LIBMWMEX_API_EXTERN_C void mexErrMsgIdAndTxt(const char *identifier, const char *err_msg,...)
Issue formatted error message with corresponding error identifier and return to MATLAB prompt...
void anisotropicDiffusion(InputArray src, OutputArray dst, float alpha, float K, int niters)
mxArray object wrapper for data conversion and manipulation.
Definition: MxArray.hpp:123
void nargchk(bool cond)
Alias for input/output arguments number check.
Definition: mexopencv.hpp:181
STL class.
Global constant definitions.
T c_str(T... args)
void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[])
Main entry called from Matlab.
cv::Mat toMat() const