资源简介
基于OpenCv实现了模板图像的旋转匹配,此代码基于matchTemplate函数封装实现可以得知旋转角度的模板匹配

代码片段和文件信息
#include
#include
//#include
#include
using namespace cv;
using namespace std;
//ROI区域的位置信息
#define xx 100//300// //横坐标
#define yy 100//80//240// //纵坐标
#define zz 300//400// //正方形ROI区域的边长
#define PI 3.14159267989
#define ModelPATH “..\\ConsoleApplication1\\picture\\my Logo.bmp“//模板图像路径
#define SearchPATH “..\\ConsoleApplication1\\picture\\my Logo.bmp“//待检测图像路径
int nThresh = 80;//二值化处理的控制阈值,最大值为255
//图片旋转函数
void imrotate(Mat &img Mat &newIm double angle)//img:输入图片;newIm:输出图片;angle:旋转角度(°)
{
//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区域函数:具体实现功能为输入原图,取原图最大可能的原型区域输出
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;
}
//旋转匹配函数(输入参数分别为匹配区域的左上角坐标、匹配角度、模板图像的ROI区域、待匹配图像)
void RatationMatch(Point &location double &angle Mat modelpicture Mat searchpicture)
{
Mat modeltmp searchtmp;
//对模板ROI区域和待检测图像分别进行三层图像金字塔下采样
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;//临时储存每个旋转角度对应的图片
//定义图片匹配所需要的参数
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:当前最佳匹配区域的左上角坐标
//在没有旋转的情况下进行第一次匹配计算
newIm = circle_tr(modeltmp);
matchTemplate(searchtmp newIm result CV_TM_SQDIFF);
minMaxLoc(result &minVal &maxVal &minLoc &maxLoc Mat());
location = minLoc;
temp = minVal;
angle = 0;//当前旋转角度记录为0
//以步长为5进行第一次粗循环匹配
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 < temp)
{
location = minLoc;
temp = minVal;
angle = i;
}
cout << minVal << “ “ << temp << “ “ << finish - start << end
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 4121 2018-08-15 16:00 基于Opencv实现的旋转匹配\ConsoleApplication1\ConsoleApplication1.vcxproj
文件 946 2018-08-15 16:00 基于Opencv实现的旋转匹配\ConsoleApplication1\ConsoleApplication1.vcxproj.filters
文件 8826 2018-09-10 00:19 基于Opencv实现的旋转匹配\ConsoleApplication1\Debug\ConsoleA.7D2ACBDB.tlog\cl.command.1.tlog
文件 210162 2018-09-10 00:19 基于Opencv实现的旋转匹配\ConsoleApplication1\Debug\ConsoleA.7D2ACBDB.tlog\CL.read.1.tlog
文件 8800 2018-09-10 00:19 基于Opencv实现的旋转匹配\ConsoleApplication1\Debug\ConsoleA.7D2ACBDB.tlog\CL.write.1.tlog
文件 230 2018-09-10 00:19 基于Opencv实现的旋转匹配\ConsoleApplication1\Debug\ConsoleA.7D2ACBDB.tlog\ConsoleApplication1.lastbuildstate
文件 15540 2018-09-10 00:19 基于Opencv实现的旋转匹配\ConsoleApplication1\Debug\ConsoleA.7D2ACBDB.tlog\li
文件 15414 2018-09-10 00:19 基于Opencv实现的旋转匹配\ConsoleApplication1\Debug\ConsoleA.7D2ACBDB.tlog\li
文件 1542 2018-09-10 00:19 基于Opencv实现的旋转匹配\ConsoleApplication1\Debug\ConsoleA.7D2ACBDB.tlog\li
文件 3612 2018-09-10 00:19 基于Opencv实现的旋转匹配\ConsoleApplication1\Debug\ConsoleApplication1.log
文件 227656 2018-08-09 16:30 基于Opencv实现的旋转匹配\ConsoleApplication1\Debug\Gauss_test.obj
文件 339712 2018-08-15 15:56 基于Opencv实现的旋转匹配\ConsoleApplication1\Debug\GetArea.obj
文件 264131 2018-08-07 14:51 基于Opencv实现的旋转匹配\ConsoleApplication1\Debug\imageRatation.obj
文件 292687 2018-09-10 00:19 基于Opencv实现的旋转匹配\ConsoleApplication1\Debug\Match.obj
文件 342257 2018-08-04 17:58 基于Opencv实现的旋转匹配\ConsoleApplication1\Debug\multi_ROI.obj
文件 356568 2018-08-14 20:42 基于Opencv实现的旋转匹配\ConsoleApplication1\Debug\On_TreshChange.obj
文件 271176 2018-08-07 15:27 基于Opencv实现的旋转匹配\ConsoleApplication1\Debug\RotationMatch.obj
文件 1821696 2018-09-10 00:19 基于Opencv实现的旋转匹配\ConsoleApplication1\Debug\vc120.idb
文件 1871872 2018-09-10 00:19 基于Opencv实现的旋转匹配\ConsoleApplication1\Debug\vc120.pdb
文件 310956 2018-08-07 15:30 基于Opencv实现的旋转匹配\ConsoleApplication1\Debug\源.obj
文件 8420 2018-09-10 00:19 基于Opencv实现的旋转匹配\ConsoleApplication1\Match.cpp
文件 1228854 2018-09-10 00:05 基于Opencv实现的旋转匹配\ConsoleApplication1\picture\my Logo.bmp
文件 42196 2018-02-01 10:29 基于Opencv实现的旋转匹配\ConsoleApplication1\picture\my Logo.jpg
文件 14090240 2018-09-10 00:20 基于Opencv实现的旋转匹配\ConsoleApplication1.sdf
文件 1003 2018-07-31 17:11 基于Opencv实现的旋转匹配\ConsoleApplication1.sln
..A..H. 40448 2018-09-10 00:20 基于Opencv实现的旋转匹配\ConsoleApplication1.v12.suo
文件 94208 2018-09-10 00:19 基于Opencv实现的旋转匹配\Debug\ConsoleApplication1.exe
文件 794344 2018-09-10 00:19 基于Opencv实现的旋转匹配\Debug\ConsoleApplication1.ilk
文件 3968000 2018-09-10 00:19 基于Opencv实现的旋转匹配\Debug\ConsoleApplication1.pdb
目录 0 2018-09-10 00:19 基于Opencv实现的旋转匹配\ConsoleApplication1\Debug\ConsoleA.7D2ACBDB.tlog
............此处省略8个文件信息
- 上一篇:基于单片机的仿生四足机器人
- 下一篇:process SPSS下的插件
相关资源
- 基于OpenCV的数字识别468815
- 使用opencv去掉二值化图像中黑色面积
- opencv环境配置
- win10 64位下编译的opencv4.5.5库,opencv
- NVIDIAOpticalFlowSDK-79c6cee80a2df9a196f20afd6
- opencv_contrib-3.4.0.zip
- opencv2.4.9源码分析——SIFT
- 用两个摄像头实现,双目标定,双目
- opencv_traincascade训练分类器,手势识别
- opencv3.0交叉编译用parallel.cpp
- 基于opencv的图像识别识别图像中的色
- 基于openCV的识别特定颜色区域
- 基于OpenCV的分水岭算法实现
- QT+opencv+OCR 身份证号码,银行卡号识别
- opencv视频特定颜色区域识别
- 把RGB转换为HSV和HSI然后根据黄色和蓝
- opencv视觉测距
- 基于Qt和opencv的身份证号码识别系统
- opencv_ffmpeg249.dll
- SfM稀疏三维点云重建--完整工程文件
- 基于opencv的数人头程序源代码
- 利用OpenCV中的Stitcher类实现全景图像拼
- opencv实现的sift算法源码,包含了图像
- openCV 上的小波变换
- 基于OPENCV的车牌识别系统设计
- 617张国内车牌60-17bmp图片用于OpenCV正样
- hog特征提取,c版本代码
- 基于Qt5.8+OpenCV3.2的Basler多相机触发开
- 基于Opencv实现的图像纠偏
- ImageWatch2019.vsix
评论
共有 条评论