zoukankan      html  css  js  c++  java
  • mwArray和cv::Mat转化函数 20170812

    不是新东西了,但是有必要专门把这两个函数拿出来记录一下。

    需要注意的是,Mat2mwArry函数的输入Mat类型是 CV_8UC1,灰度图。

    如果要传递多通道图像的话,需要先cv::split()成多个灰度图像分别传给matlab。

    mwArray2Mat的返回Mat的类型是CV_64FC1,可以通过cv::Mat::convert()转化成所需要的类型。

    mwArray Mat2mwArray(cv::Mat src)
    {
        CV_Assert(src.type() == CV_8UC1);
    
        mwArray dst(src.rows, src.cols, mxUINT8_CLASS); /// 初始化,可以理解成矩阵
        cv::Mat src_t = src.t();
        dst.SetData(src_t.data, src.rows*src.cols); /// 赋值
    
        return dst;
    }
    
    cv::Mat mwArry2Mat(mwArray src, int rows, int cols)
    {
        if(src.IsEmpty()) /// 是否为空
            return cv::Mat();
    
        cv::Mat dst = cv::Mat::zeros(rows, cols, CV_64FC1);
        for(int j(0); j<rows; ++j)
        {
            double* pdata = dst.ptr<double>(j);
            for(int i(0); i<cols; ++i)
            {
                pdata[i] = src(j+1,i+1); /// 元素访问(行号,列号)
            }
        }
        
        return dst;    
    }
    

      

  • 相关阅读:
    如何使用Log4j
    HDU 1114
    老鼠与毒药问题
    HDU 1065
    HDU 1301(MST)
    HDU 1078
    HDU 2159
    删除字符问题(贪心)
    正整数分解为几个连续自然数之和
    OpenJudge
  • 原文地址:https://www.cnblogs.com/alexYuin/p/7350577.html
Copyright © 2011-2022 走看看