小编Rol*_*asr的帖子

在OpenCV 2.2中使用C++语法的PCA + SVM

我在使用Mat和PCA类使用最新的C++语法时遇到了PCA和Eigenfaces的问题.较旧的C语法将IplImage*数组作为参数来执行其处理,而当前API仅采用由Column或Row格式化的Mat.我采用了Row方法,使用reshape函数来拟合我的图像矩阵以适合单行.我最终想要获取这些数据然后使用SVM算法来执行检测,但是当我这样做时,我的所有数据都只是一个0流.有人可以帮帮我吗?我究竟做错了什么?谢谢!

我看到了这个问题并且它有些相关,但我不确定解决方案是什么.

这基本上就是我所拥有的:

vector<Mat> images; //This variable will be loaded with a set of images to perform PCA on.
Mat values(images.size(), 1, CV_32SC1); //Values are the corresponding values to each of my images.

int nEigens = images.size() - 1; //Number of Eigen Vectors.

//Load the images into a Matrix
Mat desc_mat(images.size(), images[0].rows * images[0].cols, CV_32FC1);
for (int i=0; i<images.size(); i++) {
  desc_mat.row(i) = images[i].reshape(1, 1);
}

Mat average;
PCA pca(desc_mat, average, CV_PCA_DATA_AS_ROW, nEigens);

Mat data(desc_mat.rows, nEigens, CV_32FC1); //This …
Run Code Online (Sandbox Code Playgroud)

c++ opencv svm computer-vision pca

3
推荐指数
1
解决办法
1万
查看次数

标签 统计

c++ ×1

computer-vision ×1

opencv ×1

pca ×1

svm ×1