首页 > 代码库 > 使用OpenCV编写的LDA程序----C++ LDA代码
使用OpenCV编写的LDA程序----C++ LDA代码
改写自OpenCV中的lda.cpp程序,通过改写的程序可以返回自己所需的信息(LDA算法过程中产生的我们感兴趣的中间值),实现算法的独立编译,也可以通过阅读程序,加深对LDA算法的理解。
// main.cpp : 定义控制台应用程序的入口点。 // #include "stdafx.h" #include <cxcore.hpp> #include <vector> #include <iostream> #include "lda.h" using namespace std; using namespace cv; int main(void) { double data[6][2]={{0,1},{0,2},{1,4},{8,0},{8,2},{9,4}}; Mat dmat=Mat(6,2,CV_64FC1,data); int labels[6]={0, 0, 0, 1, 1, 1}; Mat lmat=Mat(1,6,CV_32SC1,labels); cout<<"--------------------------------"<<endl; MyLDA(dmat, lmat); system("pause"); return 0; }
//lda.h #ifndef _MY_LDA_H #define _MY_LDA_H #include <cxcore.hpp> #include <vector> using namespace std; using namespace cv; /********************* _src: 输入的采样数据,Mat类型,每行是一个样本数据 _lbls: 输入的类别标签,可以是矩阵或者向量 还没有返回值,需要的朋友可以自己做进一步改写 /********************/ extern void MyLDA(InputArrayOfArrays _src, InputArray _lbls); #endif
//lda.cpp #include "stdafx.h" #include <cxcore.hpp> #include <vector> #include <set> #include <iostream> using namespace cv; using namespace std; // Removes duplicate elements in a given vector. template<typename _Tp> inline vector<_Tp> remove_dups(const vector<_Tp>& src) { typedef typename set<_Tp>::const_iterator constSetIterator; typedef typename vector<_Tp>::const_iterator constVecIterator; set<_Tp> set_elems; for (constVecIterator it = src.begin(); it != src.end(); ++it) set_elems.insert(*it); vector<_Tp> elems; for (constSetIterator it = set_elems.begin(); it != set_elems.end(); ++it) elems.push_back(*it); return elems; } static Mat argsort(InputArray _src, bool ascending=true) { Mat src = http://www.mamicode.com/_src.getMat();>
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。