如何发送Mat H = findHomography返回Matlab

时间:2018-08-30 20:43:47

标签: c++ matlab opencv mex

我尝试使用OpenCV函数findHomography。我使用Mex OpenCV。我的问题是如何将Mat H数组返回到MATLAB。 我希望任何人都可以帮助我:-)

示例代码为:

enter code here

#include "opencvmex.hpp"
#include "math.h"
#include "mex.h"
#include "matrix.h"

using namespace std;
using namespace cv;

void mexFunction(int nlhs, mxArray *plhs[], 
            int nrhs, const mxArray *prhs[]){


    //create "CV_32FC2" Array       
    Mat srcPoints(4,1,CV_32FC2);

    srcPoints.at<int>(0)=221;
    srcPoints.at<int>(1)=227;              
    srcPoints.at<int>(2)=237;
    srcPoints.at<int>(3)=255;

    Mat dstPoints(4,1,CV_32FC2);

    dstPoints.at<int>(0)=120;
    dstPoints.at<int>(1)=67;
    dstPoints.at<int>(2)=91;
    dstPoints.at<int>(3)=113;


    // findHomography

    Mat H;

    int method=0;
    double ransacReprojThreshold=3;
    int maxIters = 2000;
    double confidence = 0.995;        

     H = findHomography(srcPoints,dstPoints);
  }

1 个答案:

答案 0 :(得分:0)

您可以使用ocvMxArrayFromMat_{DataType},在您的情况下最好使用:

plhs[0]=ocvMxArrayFromMat_double(H);

Here is the documentation的OpenCV界面,因此您可以查看可用的功能。