【发布时间】:2015-08-23 20:15:44
【问题描述】:
我是 OpenCV 和 C++ 的初学者。 我正在尝试使用 3 个不同的面孔编写用于人脸识别的 PCA 代码。为此,每张图像(大小为 d=mxn)都被重新整形为包含 d 个元素的列向量。
typedef vector<Mat> Row;
Row img1v(36000,img1);
Row img2v(36000,img2);
Row img3v(36000,img3);
我计算图像的均值向量如下:
Row meanImg;
for(int i=0;i<img1v.size();++i)
{
meanImg.push_back((img1v[i]+img2v[i]+img3v[i])/3);
}
cout<<meanImg.size()<<endl;
这里出现错误:
OpenCV 错误:OutOfMemoryError 中内存不足(分配 144004 字节失败)
我的图片尺寸是 180x200。我不知道该怎么办?另外,如何使用 C++ 在 opencv 中形成行向量? (为了计算协方差,我需要将差异向量乘以它的 traspose)。
【问题讨论】:
-
你试过调试你的代码吗?错误发生在哪个位置?
img1的类型是什么? -
我没有得到 meanImg 大小.....输出终端显示此错误。 img1 是 cv::Mat
标签: c++ opencv pca face-recognition