有段時間沒寫日誌後了,上傳一個符合代碼,不過這代碼有點問題
// 匹配法_尋對號.cpp : 定義控制台應用程式的進入點。///*=========================================================================名稱:匹配_尋對號時間:2013.08說明:=========================================================================*/#include "stdafx.h"#include "cv.h"#include "highgui.h"#include "cxcore.h"//-------------------匹配函數------------------//double OpencvChinaCom_getSimilarity(IplImage* src1,IplImage* src2){CvMemStorage* mem1,*mem2;//聲明兩個記憶體空間mem1 = cvCreateMemStorage();//初始化記憶體空間mem2 = cvCreateMemStorage();CvSeq* contours1,*contours2;//尋找輪廓cvFindContours(src1,mem1,&contours1,sizeof(CvContour),CV_RETR_LIST);cvFindContours(src2,mem2,&contours2,sizeof(CvContour),CV_RETR_LIST);double match = cvMatchShapes(contours1,contours2,3);//匹配函數//釋放記憶體空間cvClearMemStorage(mem1);cvClearMemStorage(mem2);return match;}//-------------------主函數-------------------//int _tmain(int argc, _TCHAR* argv[]){//----載入待處理映像與出去頭部大小不一樣部分----//IplImage *src1 = cvLoadImage("./1.jpg", 0);//載入時強制轉為灰階圖片IplImage *src3 = cvLoadImage("./3.jpg", 0);CvSize size;size.width = src1->width;size.height = src1->height - src3->height;IplImage *dst1 = cvCreateImage(size, src1->depth, 1);cvSetImageROI(src1, cvRect(0, src3->height, src1->width, src1->height-src3->height));cvCopy(src1, dst1);cvResetImageROI(src1);//-------載入參考圖片--------//IplImage *src2 = cvLoadImage("./2.jpg", 0);IplImage *dst2 = cvCreateImage(cvGetSize(src2), src2->depth, 1);cvThreshold(src2, src2, 100, 255, CV_THRESH_BINARY_INV);//-------擷取待匹配圖片--------//for(double x=0; cvRound(x)<=(dst1->height - src2->width); x=x+src2->width){for(double y=0; cvRound(y)<=(dst1->height - src2->height); y=y+src2->height){cvSetImageROI(dst1, cvRect(x, y, src2->width, src2->height));cvCopy(dst1, dst2);cvThreshold(dst2,dst2,100,255,CV_THRESH_BINARY_INV);//初始化src1,設定對比參考cvResetImageROI(dst1);//-----------調用匹配函數來對比並輸出傳回值------------//double similarity = 0;similarity = OpencvChinaCom_getSimilarity(src2,dst2);printf("匹配結果 %f\n" , similarity);}}printf("結果說明 匹配結果中 值越小的 越與源映像相似\n");//釋放記憶體cvReleaseImage(&src1);cvReleaseImage(&src2);cvReleaseImage(&src3);cvReleaseImage(&dst1);cvReleaseImage(&dst2);cvReleaseImage(&dsr3);return 0;}