Matlab to OpenCV Mat
2015-10-10 19:39
381 查看
convert Matlab matrix to OpenCV Mat. Support CV_32FC3 only currently.
The Code
int matlab2opencv(cv::Mat &img, const mxArray *&mat){ mwSize num_dims = mxGetNumberOfDimensions(mat); const mwSize *dims = mxGetDimensions(mat); //for (int i = 0; i < num_dims; i++){ // mexPrintf("%d-th:%d\n", i, dims[i]); //} if (num_dims != 3 || dims[2] != 3){ mexPrintf("error image dimensions!\n"); return EXIT_FAILURE; } if (!mxIsSingle(mat)){ mexPrintf("the input matrix must be double with value in [0,1]."); return EXIT_FAILURE; } int rows = dims[0]; int cols = dims[1]; int nchs = 3; img.create(rows, cols, CV_32FC3); float *mat_data = (float*)mxGetData(mat); float *mat_temp_ptr = NULL; int layer_size = rows*cols; for (int ch = 0; ch < nchs; ch++){ mat_temp_ptr = mat_data + ch*layer_size; int rd = 2 - ch; for (int c = 0; c < cols; c++){ for (int r = 0; r < rows; r++){ img.at<cv::Vec3f>(r, c)[rd] = mat_temp_ptr[c*rows+r]; } } } return EXIT_SUCCESS; }
相关文章推荐
- 解析在main函数之前调用函数以及对设计的作用详解
- python中使用OpenCV进行人脸检测的例子
- opencv 做人脸识别 opencv 人脸匹配分析
- java和matlab画多边形闭合折线图示例讲解
- 使用opencv拉伸图像扩大分辨率示例
- C#调用Matlab生成的dll方法的详细说明
- OpenCV 2.4.3 C++ 平滑处理分析
- 从java中调用matlab详细介绍
- 利用Python和OpenCV库将URL转换为OpenCV格式的方法
- python结合opencv实现人脸检测与跟踪
- 在树莓派2或树莓派B+上安装Python和OpenCV的教程
- OpenCV配置,从来没有这么简单!
- ubuntu下opencv和qt的安装配置
- VC++与Matlab混合编程的快速实现
- OpenCV学习笔记(二十五)——OpenCV图形界面设计Qt+VS2008
- 分享一些OpenCV实现立体视觉的经验
- 关于OpenCv图像变换与基本图形检测
- "应用程序正常初始化失败"-0xc0150002 解决办法
- Matlab 矩阵运算
- matlab与opencv部分函数的对照