-
大小: 4.6MB文件類型: .rar金幣: 2下載: 0 次發(fā)布日期: 2023-09-16
- 語言: 其他
- 標簽: OpenCv??旋轉(zhuǎn)匹配??
資源簡介
基于OpenCv實現(xiàn)了模板圖像的旋轉(zhuǎn)匹配,此代碼基于matchTemplate函數(shù)封裝實現(xiàn)可以得知旋轉(zhuǎn)角度的模板匹配

代碼片段和文件信息
#include
#include
//#include
#include
using?namespace?cv;
using?namespace?std;
//ROI區(qū)域的位置信息
#define?xx?100//300//??//橫坐標
#define?yy?100//80//240//???//縱坐標
#define?zz?300//400//??//正方形ROI區(qū)域的邊長
#define?PI?3.14159267989
#define?ModelPATH?“..\\ConsoleApplication1\\picture\\my?Logo.bmp“//模板圖像路徑
#define?SearchPATH?“..\\ConsoleApplication1\\picture\\my?Logo.bmp“//待檢測圖像路徑
int?nThresh?=?80;//二值化處理的控制閾值,最大值為255
//圖片旋轉(zhuǎn)函數(shù)
void?imrotate(Mat?&img?Mat?&newIm?double?angle)//img:輸入圖片;newIm:輸出圖片;angle:旋轉(zhuǎn)角度(°)
{
//int?len?=?max((img.cols)?(img.rows));
//Point2f?pt(len?/?2.0?len?/?2.0);
//Mat?r?=?getRotationMatrix2D(pt?angle?1.0);
//warpAffine(img?newIm?r?Size(len?len));
//better?performance?:
Point2f?pt(img.cols?/?2.?img.rows?/?2.);
Mat?r?=?getRotationMatrix2D(pt?angle?1.0);
warpAffine(img?newIm?r?img.size());
}
//取圓形ROI區(qū)域函數(shù):具體實現(xiàn)功能為輸入原圖,取原圖最大可能的原型區(qū)域輸出
Mat?circle_tr(Mat?src)
{
Mat?dst?=?Mat::zeros(src.size()?src.type());
Mat?mask?=?Mat::zeros(src.size()?CV_8U);
Point?circleCenter(mask.cols?/?2?mask.rows?/?2);
int?radius?=?min(mask.cols?mask.rows)?/?2;
circle(mask?circleCenter?radius?Scalar(255)?-1);
src.copyTo(dst?mask);
return?dst;
}
//旋轉(zhuǎn)匹配函數(shù)(輸入?yún)?shù)分別為匹配區(qū)域的左上角坐標、匹配角度、模板圖像的ROI區(qū)域、待匹配圖像)
void?RatationMatch(Point?&location?double?&angle?Mat?modelpicture?Mat?searchpicture)
{
Mat?modeltmp?searchtmp;
//對模板ROI區(qū)域和待檢測圖像分別進行三層圖像金字塔下采樣
pyrDown(modelpicture?modeltmp?Size(modelpicture.cols?/?2?modelpicture.rows?/?2));
pyrDown(searchpicture?searchtmp?Size(searchpicture.cols?/?2?searchpicture.rows?/?2));
pyrDown(modeltmp?modeltmp?Size(modeltmp.cols?/?2?modeltmp.rows?/?2));
pyrDown(searchtmp?searchtmp?Size(searchtmp.cols?/?2?searchtmp.rows?/?2));
pyrDown(modeltmp?modeltmp?Size(modeltmp.cols?/?2?modeltmp.rows?/?2));
pyrDown(searchtmp?searchtmp?Size(searchtmp.cols?/?2?searchtmp.rows?/?2));
Mat?newIm;//臨時儲存每個旋轉(zhuǎn)角度對應(yīng)的圖片
//定義圖片匹配所需要的參數(shù)
int?result_cols?=?searchtmp.cols?-?modeltmp.cols;
int?result_rows?=?searchtmp.rows?-?modeltmp.rows;
Mat?result?=?Mat(result_cols?result_rows?CV_32FC1);
double?minVal?maxVal?temp;//minVal:當前匹配計算的最小值
Point?minLoc?maxLoc?matchLoc1;//minLoc:當前最佳匹配區(qū)域的左上角坐標
//在沒有旋轉(zhuǎn)的情況下進行第一次匹配計算
newIm?=?circle_tr(modeltmp);
matchTemplate(searchtmp?newIm?result?CV_TM_SQDIFF);
minMaxLoc(result?&minVal?&maxVal?&minLoc?&maxLoc?Mat());
location?=?minLoc;
temp?=?minVal;
angle?=?0;//當前旋轉(zhuǎn)角度記錄為0
//以步長為5進行第一次粗循環(huán)匹配
for?(int?i?=?-20;?i?21;?i?=?i?+?5)
{
double?start?=?(double)clock();
imrotate(modeltmp?newIm?i);
newIm?=?circle_tr(newIm);
matchTemplate(searchtmp?newIm?result?CV_TM_SQDIFF);
minMaxLoc(result?&minVal?&maxVal?&minLoc?&maxLoc?Mat());
double?finish?=?(double)clock();
if?(minVal? {
location?=?minLoc;
temp?=?minVal;
angle?=?i;
}
cout?<
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件???????4121??2018-08-15?16:00??基于Opencv實現(xiàn)的旋轉(zhuǎn)匹配\ConsoleApplication1\ConsoleApplication1.vcxproj
?????文件????????946??2018-08-15?16:00??基于Opencv實現(xiàn)的旋轉(zhuǎn)匹配\ConsoleApplication1\ConsoleApplication1.vcxproj.filters
?????文件???????8826??2018-09-10?00:19??基于Opencv實現(xiàn)的旋轉(zhuǎn)匹配\ConsoleApplication1\Debug\ConsoleA.7D2ACBDB.tlog\cl.command.1.tlog
?????文件?????210162??2018-09-10?00:19??基于Opencv實現(xiàn)的旋轉(zhuǎn)匹配\ConsoleApplication1\Debug\ConsoleA.7D2ACBDB.tlog\CL.read.1.tlog
?????文件???????8800??2018-09-10?00:19??基于Opencv實現(xiàn)的旋轉(zhuǎn)匹配\ConsoleApplication1\Debug\ConsoleA.7D2ACBDB.tlog\CL.write.1.tlog
?????文件????????230??2018-09-10?00:19??基于Opencv實現(xiàn)的旋轉(zhuǎn)匹配\ConsoleApplication1\Debug\ConsoleA.7D2ACBDB.tlog\ConsoleApplication1.lastbuildstate
?????文件??????15540??2018-09-10?00:19??基于Opencv實現(xiàn)的旋轉(zhuǎn)匹配\ConsoleApplication1\Debug\ConsoleA.7D2ACBDB.tlog\li
?????文件??????15414??2018-09-10?00:19??基于Opencv實現(xiàn)的旋轉(zhuǎn)匹配\ConsoleApplication1\Debug\ConsoleA.7D2ACBDB.tlog\li
?????文件???????1542??2018-09-10?00:19??基于Opencv實現(xiàn)的旋轉(zhuǎn)匹配\ConsoleApplication1\Debug\ConsoleA.7D2ACBDB.tlog\li
?????文件???????3612??2018-09-10?00:19??基于Opencv實現(xiàn)的旋轉(zhuǎn)匹配\ConsoleApplication1\Debug\ConsoleApplication1.log
?????文件?????227656??2018-08-09?16:30??基于Opencv實現(xiàn)的旋轉(zhuǎn)匹配\ConsoleApplication1\Debug\Gauss_test.obj
?????文件?????339712??2018-08-15?15:56??基于Opencv實現(xiàn)的旋轉(zhuǎn)匹配\ConsoleApplication1\Debug\GetArea.obj
?????文件?????264131??2018-08-07?14:51??基于Opencv實現(xiàn)的旋轉(zhuǎn)匹配\ConsoleApplication1\Debug\imageRatation.obj
?????文件?????292687??2018-09-10?00:19??基于Opencv實現(xiàn)的旋轉(zhuǎn)匹配\ConsoleApplication1\Debug\Match.obj
?????文件?????342257??2018-08-04?17:58??基于Opencv實現(xiàn)的旋轉(zhuǎn)匹配\ConsoleApplication1\Debug\multi_ROI.obj
?????文件?????356568??2018-08-14?20:42??基于Opencv實現(xiàn)的旋轉(zhuǎn)匹配\ConsoleApplication1\Debug\On_TreshChange.obj
?????文件?????271176??2018-08-07?15:27??基于Opencv實現(xiàn)的旋轉(zhuǎn)匹配\ConsoleApplication1\Debug\RotationMatch.obj
?????文件????1821696??2018-09-10?00:19??基于Opencv實現(xiàn)的旋轉(zhuǎn)匹配\ConsoleApplication1\Debug\vc120.idb
?????文件????1871872??2018-09-10?00:19??基于Opencv實現(xiàn)的旋轉(zhuǎn)匹配\ConsoleApplication1\Debug\vc120.pdb
?????文件?????310956??2018-08-07?15:30??基于Opencv實現(xiàn)的旋轉(zhuǎn)匹配\ConsoleApplication1\Debug\源.obj
?????文件???????8420??2018-09-10?00:19??基于Opencv實現(xiàn)的旋轉(zhuǎn)匹配\ConsoleApplication1\Match.cpp
?????文件????1228854??2018-09-10?00:05??基于Opencv實現(xiàn)的旋轉(zhuǎn)匹配\ConsoleApplication1\picture\my?Logo.bmp
?????文件??????42196??2018-02-01?10:29??基于Opencv實現(xiàn)的旋轉(zhuǎn)匹配\ConsoleApplication1\picture\my?Logo.jpg
?????文件???14090240??2018-09-10?00:20??基于Opencv實現(xiàn)的旋轉(zhuǎn)匹配\ConsoleApplication1.sdf
?????文件???????1003??2018-07-31?17:11??基于Opencv實現(xiàn)的旋轉(zhuǎn)匹配\ConsoleApplication1.sln
????..A..H.?????40448??2018-09-10?00:20??基于Opencv實現(xiàn)的旋轉(zhuǎn)匹配\ConsoleApplication1.v12.suo
?????文件??????94208??2018-09-10?00:19??基于Opencv實現(xiàn)的旋轉(zhuǎn)匹配\Debug\ConsoleApplication1.exe
?????文件?????794344??2018-09-10?00:19??基于Opencv實現(xiàn)的旋轉(zhuǎn)匹配\Debug\ConsoleApplication1.ilk
?????文件????3968000??2018-09-10?00:19??基于Opencv實現(xiàn)的旋轉(zhuǎn)匹配\Debug\ConsoleApplication1.pdb
?????目錄??????????0??2018-09-10?00:19??基于Opencv實現(xiàn)的旋轉(zhuǎn)匹配\ConsoleApplication1\Debug\ConsoleA.7D2ACBDB.tlog
............此處省略8個文件信息
- 上一篇:基于單片機的仿生四足機器人
- 下一篇:process SPSS下的插件
評論
共有 條評論