通过GetImage从IplImage转换为Cv Mat后使用Reshape

时间:2014-03-27 22:59:13

标签: opencv reshape iplimage

我需要从输入灰度图像中获取一维矢量,以便计算协方差矩阵。所以我试图将IplImage转换为CvMat然后重塑它。

我第一次使用以下代码:

CvMat *image_matrix = cvCreateMat(image->width, image->height, CV_32FC1);
cvConvert(image, image_matrix);
CvMat iv_p, *image_vector = cvCreateMat(image->widht * image->height, 1, CV_32FC1);
image_vector = cvReshape(image_matrix, &iv_p, 1, image->widht * image->height);

但它给了我

  

断言失败(src.size == dst.size&& src.channels<> ==   dst.channels<>在cvConvertScale中)

所以我在这里找到另一种方式:

CvMat i_p, *image_matrix;
image_matrix = cvGetMat(image, &i_p, 0, 0);
CvMat iv_p, *image_vector = cvCreateMat(image->widht * image->height, 1, CV_32FC1);
image_vector = cvReshape(image_matrix, &iv_p, 1, image->widht * image->height);

但是这次我得到了

  

图像步骤错误(矩阵不连续,因此无法更改行数>在cvReshape中。

有人可以建议解决我的问题吗?

0 个答案:

没有答案