标签:syntax ack pat scalar lsp 处理 blank amp iostream
http://blog.csdn.net/abc8730866/article/details/69219992
轮廓特征属性及应用(七)—位置关系及轮廓匹配
1.计算点与轮廓的距离及位置关系——pointPolygonTest()
2.矩的计算——moments()
3.形状匹配(比较两个形状或轮廓间的相似度)——matchShapes()
先上ppt:
代码:1.计算点到轮廓的距离与位置关系
运行结果:
代码:2.轮廓矩的计算
运行结果:
代码:3.形状匹配---比较两个形状或轮廓间的相似度
运行结果:
http://blog.csdn.net/zt271675484/article/details/21305893
1 普通局
2 中心距:平移不变性
3 归一化中心距:缩放不变性
4 hu矩:旋转不变性
iplImage* img=cvload("xxxxx");
//计算普通局和中心距
CvMoments moment;
cvMoments(img,&moment,2);//第三个参数:>0 0/1组成图像
//计算hu矩
CVHuMoments humoment;
cvGetHuMoments(&moment,&humoment);
图像1---》hu矩
图像2---》hu矩
通过比较 图像1和2 的hu矩 --- 值越小 相似度就越大。
OPencv 比较hu矩的函数(已经封装的上述的运算)
CvSeq* contours1=通过函数获取img的轮廓 指针。
CvSeq* contours1=通过函数获取img的轮廓 指针。
double result=cvMatchShapes(contours1,contours2,1);//第三个参数 为比较的方式。 输出比较的相似度浮点值。
#include "cv.h"#include "cxcore.h"#include "highgui.h"#include <iostream>#include "function.h"int MatchContour(int argc,char** argv){IplImage *Src1=cvLoadImage("e:\\picture\\jiantou.jpg",0);IplImage *Src2=cvLoadImage("e:\\picture\\jiantou2.jpg",0);IplImage *BinaryImage1=cvCreateImage(cvGetSize(Src1),Src1->depth,1);IplImage *BinaryImage2=cvCreateImage(cvGetSize(Src2),Src2->depth,1);IplImage *SrcColor1=cvCreateImage(cvGetSize(Src1),Src1->depth,3);IplImage *SrcColor2=cvCreateImage(cvGetSize(Src2),Src2->depth,3);cvThreshold(Src1,BinaryImage1,100,255,CV_THRESH_BINARY);cvThreshold(Src2,BinaryImage2,100,255,CV_THRESH_BINARY);CvMemStorage* storage1=cvCreateMemStorage(0);CvMemStorage* storage2=cvCreateMemStorage(0);CvSeq* ContourSeq1=NULL;CvSeq* ContourSeq2=NULL;cvFindContours(BinaryImage1,storage1,&ContourSeq1,sizeof(CvContour));cvFindContours(BinaryImage2,storage2,&ContourSeq2,sizeof(CvContour));cvCvtColor(Src1,SrcColor1,CV_GRAY2BGR);cvCvtColor(Src2,SrcColor2,CV_GRAY2BGR);cvDrawContours(return 0;}
|
【OpenCV学习笔记】三十、轮廓特征属性及应用(七)—位置关系及轮廓匹配
标签:syntax ack pat scalar lsp 处理 blank amp iostream
原文地址:http://www.cnblogs.com/jukan/p/7813065.html