openCV3.0
#include <cv.h>
#include <cxcore.h>
#include <highgui.h>
#include <iostream>
#include "opencv2/opencv.hpp"
using namespace std;
using namespace cv;
int main_hu(){
Mat src = imread("leaf.jpg",0);
vector<vector<Point> > contours;
vector<Vec4i> hierarchy;//hierarchy[ i ][ 0 ] ~hierarchy[ i ][ 3 ],分别表示后一个轮廓、前一个轮廓、父轮廓、内嵌轮廓的索引编号
//获取轮廓
findContours(src,contours,hierarchy,CV_RETR_CCOMP,CV_CHAIN_APPROX_SIMPLE);//返回轮廓的数目
Moments mo;
double hu[7];
for(int i=0;i<contours.size();i++){
mo=moments(contours[i]);
HuMoments(mo, hu);
cout<<hu[0]<<" "<<hu[1]<<" "<<hu[2]<<" "<<hu[3]<<" "<<hu[4]<<" "<<hu[5]<<" "<<hu[6]<<endl;
}
return 0;
}