opencv2.0以後新增C++介面的 Mat矩陣 單行賦值及矩陣合并的問題與實現(苦心研究多天才解決!)

來源:互聯網
上載者:User

      背景:現在有CvMat類型的矩陣n個,每個矩陣都是1*m的行向量,也即每個CvMat代表一個樣本的特徵向量。

現在需要申請一個n*m, 即n行m列的矩陣, 每一行表示一個樣本的特徵向量,特徵向量的維數為m。此問題也就是糾結我多天的矩陣合并問題。

           解決方案:

 CvMat *palm = (CvMat*)cvLoad(path);  //得到一個行向量

 Mat tempMat = Mat(palm, true);            //將CvMat轉為Mat   
  Mat dsttemp = M.row(n);             //M為目的矩陣 n*m
  tempMat.copyTo(dsttemp);       //

         如何查看M的值呢,網上說cout<<M就可以了,可是我電腦上沒成功,不知道怎麼回事。

我自己的方法:

        const float *pData = M.ptr<float>(1);   //這是查看第二行的值,如果查看第一行則改為 <float>(0)
        for(int i=0; i<M.cols; i++)
         cout<<pData[i]<<endl;

至此,問題完美解決!!! NND,讓我研究了幾天。

參考:

(1)http://stackoverflow.com/questions/8005627/opencv-2-3-copyto-function-not-working-as-it-was-in-2-2

(2)http://hi.baidu.com/%BE%B2%C7%C4%C7%C4%B5%D8%B0%AE%D7%C5%C4%E3/blog/item/509b7d198c12742734fa417e.html#0  我按照此方法,報錯:

錯誤:no matching function for call to 'cv::Mat::copyTo(cv::Mat)'(3)http://www.opencv.org.cn/forum/viewtopic.php?p=2987     基於CVMat類型的實現,太麻煩了,我沒有實驗,大家有弄的出來結果給我說下哈!

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.