gpt4 book ai didi

c++ - 将数据从 cv::Mat 转换为 mxArray

转载 作者:可可西里 更新时间:2023-11-01 18:15:08 25 4
gpt4 key购买 nike

我想在 C++ 代码中使用“engine.h”将矩阵发送到 Matlab。事实上,我在 cv::Mat 中有数据,我需要发送一个 mxArray。我尝试使用这个表达式,但它不起作用:

cv::Mat _priorP;
_priorP = Mat::eye(13, 13, CV_32FC1);
mxArray *mat;
mat = mxCreateDoubleMatrix(13, 13, mxREAL);

memcpy(mxGetPr(mat),_priorP.data, 13*13*sizeof(double));

有人知道进行转换的正确方法吗?任何帮助将不胜感激。谢谢。

编辑

我是这样找到的: https://stackoverflow.com/a/8848711/744859

最佳答案

Kota Yamaguchi 开发了一个库 http://github.com/kyamagu/mexopencv该包包含一个 C++ 类(称为 MxArray),可在 Matlab 的 native 数据类型 (mxArray) 和 OpenCV 数据类型之间进行转换。该库直接支持 OpenCV 的 C++ API(Open CV 2.0 及更高版本),因此无需进行额外的转换(例如,从 cvMat 到 cv::Mat 或从 IplImage 到 cv::Mat)。示例用法:

#include "mexopencv.hpp" // include the library
#include "highgui.h"

void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[])
{
cv::Mat image;
image = imread("filename"); // read an image from file
plhs[0] = MxArray(image); // convert from cv::Mat to mxArray
}

就是这样。确保将您的 mex 函数库中的 MxArray.cpp 文件一起编译;您可以在 MATLAB 命令行中执行此操作:

    mex yourmexfile.cpp MxArray.cpp

关于c++ - 将数据从 cv::Mat 转换为 mxArray,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8834203/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com