opencv2.0以后新增C++接口的 Mat矩阵 单行赋值及矩阵合并的问题与实现(苦心研究多天才解决!)
背景:现在有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<
我自己的方法:
const float *pData = M.ptr(1); //这是查看第二行的值,如果查看第一行则改为 (0)
for(int i=0; i
cout<
至此,问题完美解决!!! 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类型的实现,太麻烦了,我没有实验,大家有弄的出来结果给我说下哈!