#include <iostream>
#include <math.h>
#include "engine.h"
#include "engine.h"
#include <iostream>
#include "opencv2/highgui/highgui.hpp"
#include <opencv2/core/core.hpp>
#include <opencv2/imgproc/imgproc.hpp>
using namespace cv;
using namespace std;
bool mat2mxArray(Mat imgSrc,mxArray* pMat)
{
if (!imgSrc.empty())
{
mxArray * pv;
imgSrc = imgSrc.t();
pv = mxCreateNumericMatrix(imgSrc.cols,imgSrc.rows,mxSINGLE_CLASS, mxREAL);
memcpy(mxGetPr(pMat), imgSrc.data, mxGetNumberOfElements(pv)*sizeof(double));
mxDestroyArray(pv);
}
else
{
printf("imSrc is empty! \n");
return false;
}
}
void mxArray2mat(mxArray* pMat,Mat &imgSrc)
{
memcpy(imgSrc.data,mxGetPr(pMat),mxGetNumberOfElements(pMat)*sizeof(double));
imgSrc=imgSrc.t();
}
int calPinv(Mat a,Mat &b)
{
Engine *ep; //定义Matlab引擎指针。
if (!(ep=engOpen(NULL))) //测试是否启动Matlab引擎成功。
{
cout <<"Can't start Matlab engine!
c++调用matlab求伪逆
最新推荐文章于 2024-10-31 17:26:44 发布
该博客介绍了如何在C++程序中调用MATLAB引擎来计算矩阵的伪逆。通过创建mxArray对象,将OpenCV的Mat矩阵转换为MATLAB可接受的格式,然后在MATLAB环境中执行`pinv`函数,最后将结果转换回C++的Mat矩阵。示例代码展示了如何处理3x3矩阵的伪逆计算。
开发板推荐:天空星STM32F407VET6开发板
超高性价比 STM32主控 | 超高主频 | 一板兼容百芯 | 比赛神器 | 沉金彩色丝印
开发板推荐:天空星STM32F407VET6开发板
超高性价比 STM32主控 | 超高主频 | 一板兼容百芯 | 比赛神器 | 沉金彩色丝印


1万+

被折叠的 条评论
为什么被折叠?



