资源简介
运用了opencv2.4.9版本在VS2012中进行两张图像的相关系数匹配,程序可以自动匹配和手动匹配,人性化
代码片段和文件信息
// Rmatch.cpp : 定义控制台应用程序的入口点。
//
#include “stdafx.h“
using namespace std;
using namespace cv;
Mat imgleft;Mat imgright;Point selectobjp;
Rect roiRectselectRect;Point startpendpoint;
bool downflag=falseupflag=falseeventflag=false;
int _tmain(int argc _TCHAR* argv[])
{
Mat left=imread(“Left50.jpg“);
if(left.empty())
return -1;
Mat right=imread(“Right49.jpg“);
if(right.empty())
return -1;
//转化为灰度图像
cvtColor(leftimgleftCV_BGR2GRAY);
cvtColor(rightimgrightCV_BGR2GRAY);
imwrite(“Right49_.jpg“imgright);
Mat imgleft1=imgleft.clone();Mat imgright1=imgright.clone();//克隆一份,不直接用原始图像
//简单粗暴的Morevec 角点检测试验
/*Mat MorevecCorners(Mat srcimgint ksizeint threshold);
Mat resMorMatL=MorevecCorners(imgleft1515000);
Mat resMorMatR=MorevecCorners(imgright1515000);
imshow(“resMorMatL“resMorMatL);
imshow(“resMorMatR“resMorMatR);
waitKey(0);*/
//改进Harris算法的Shi-Tomasi算法角点检测试验
Mat Shi_TomasiCorners(Mat srcimgvector &vec);
vector vecCornersL;vector vecCornersR;
Mat resShi_TomasiL=Shi_TomasiCorners(imgleft1vecCornersL);
Mat resShi_TomasiR=Shi_TomasiCorners(imgright1vecCornersR);
void savecorners(bool lorrvector & vec);
bool isleft=trueisright=false;
savecorners(isleftvecCornersL);savecorners(isrightvecCornersR);//将算出的点保存,可用于自动输入目标点代替肉眼寻找角点
//imshow(“resShi_TomasiL“resShi_TomasiL);
//imshow(“resShi_TomasiR“resShi_TomasiR);
waitKey(0);
void trymatch();//函数说明
void trymatch1(vector &vec);
/*Point Rmatchp(Mat imgobjMat imgscenePoint objpPoint topleftPoint downrightint winsizedouble &maxR);*/
char autoorhand;
cout<<“自动用计算所得角点匹配(y)或手动选择角点匹配(n)?“;cin>>autoorhand;
if(autoorhand==‘y‘||autoorhand==‘Y‘)
trymatch1(vecCornersL);
else
{
char choice;
while(1)
{
system(“cls“);
trymatch();
cin>>choice;
if(choice==‘n‘||choice==‘n‘)
break;
if(choice!=‘y‘ && choice!=‘Y‘ &&choice!=‘n‘ &&choice!=‘N‘)
cout<<“\n输入错误请重新输入“;
}
}
system(“pause“);
return 0;
}
void trymatch()//手动输入目标点匹配
{
cout<<“下面进行匹配试验试验结束后试验结果会保存在与cpp同级的savetry.txt文件中:“< int row0=0col0=0;
int winsize;
cout<<“请输入计算窗口大小,奇数,如7×7输入7(建议不小于7):“;cin>>winsize;
while(1)
{
cout<<“下面输入目标点像素坐标,鼠标点击选择(y)或手动输入(n)?“< char sele=‘y‘;cin>>sele;
if(sele==‘n‘)
{
cout<<“请输入目标点的像素坐标(行,列):“<>row0;
cout<<“列(不大于270):“;cin>>col0;cout< }
else
{
cout<<“下面进行鼠标点选按下鼠标左键选择,选好后请按键盘任意键“< namedWindow(“select object point“);
void MouseEvent(int eventint xint yint flagsvoid *data);
setMouseCallback(“select object point“MouseEvent0);
imshow(“select object point“imgleft);waitKey(0);/*destroyWindow(“select object point“);*/
row0=selectobjp.x;col0=selectobjp.y;
}
if(col0>270||col0(imgleft.rows-winsize/2-1)||col0>(imgleft.cols-winsize/2-1))
cout<<“输入目标点不符合要求请重新输入:“;
el
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 113664 2018-05-06 14:10 Rmatch\Debug\Rmatch.exe
文件 664252 2018-05-06 14:10 Rmatch\Debug\Rmatch.ilk
文件 2714624 2018-05-06 14:10 Rmatch\Debug\Rmatch.pdb
文件 3734016 2014-04-15 17:05 Rmatch\opencv库\opencv_core249d.dll
文件 470952 2014-04-15 17:05 Rmatch\opencv库\opencv_core249d.lib
文件 3823616 2014-04-15 17:05 Rmatch\opencv库\opencv_highgui249d.dll
文件 142680 2014-04-15 17:05 Rmatch\opencv库\opencv_highgui249d.lib
文件 3436032 2014-04-15 17:05 Rmatch\opencv库\opencv_imgproc249d.dll
文件 192618 2014-04-15 17:05 Rmatch\opencv库\opencv_imgproc249d.lib
文件 696 2018-05-06 14:37 Rmatch\Rmatch\Cornersleft.txt
文件 699 2018-05-06 14:37 Rmatch\Rmatch\Cornersright.txt
文件 3074 2018-05-06 14:10 Rmatch\Rmatch\Debug\cl.command.1.tlog
文件 11542 2018-05-06 14:10 Rmatch\Rmatch\Debug\CL.read.1.tlog
文件 846 2018-05-06 14:10 Rmatch\Rmatch\Debug\CL.write.1.tlog
文件 2 2018-05-06 14:10 Rmatch\Rmatch\Debug\li
文件 2 2018-05-06 14:10 Rmatch\Rmatch\Debug\li
文件 2 2018-05-06 14:10 Rmatch\Rmatch\Debug\li
文件 2 2018-05-06 14:10 Rmatch\Rmatch\Debug\li
文件 2 2018-05-06 14:10 Rmatch\Rmatch\Debug\li
文件 2 2018-05-06 14:10 Rmatch\Rmatch\Debug\li
文件 2 2018-05-06 14:10 Rmatch\Rmatch\Debug\li
文件 2 2018-05-06 14:10 Rmatch\Rmatch\Debug\li
文件 2 2018-05-06 14:10 Rmatch\Rmatch\Debug\li
文件 2 2018-05-06 14:10 Rmatch\Rmatch\Debug\li
文件 2 2018-05-06 14:10 Rmatch\Rmatch\Debug\li
文件 2 2018-05-06 14:10 Rmatch\Rmatch\Debug\li
文件 2 2018-05-06 14:10 Rmatch\Rmatch\Debug\li
文件 2 2018-05-06 14:10 Rmatch\Rmatch\Debug\li
文件 2 2018-05-06 14:10 Rmatch\Rmatch\Debug\li
文件 2 2018-05-06 14:10 Rmatch\Rmatch\Debug\li
............此处省略117个文件信息
相关资源
- VS2008 opencv MFC 计算米粒的个数及最大
- 书中-part2-1
- vc++ 数字图像处理典型算法及实现 源
- 14_车牌识别系统.zip
- 13_车型识别系统.zip
- Visual C++数字图像处理谢凤英版源代码
- C语言实现图像的旋转缩放裁切
- 人脸跟踪基于opencv
- surf特征提取与匹配
- SRAD算法C++实现
- VC C++数字图像处理实验程序
- C语言实用数字图像处理_源代码code
- MFC+Opencv 摄像头保存为图像和视频
- 数字图像处理MFC编程之灰度图像线性
- TLD 全C++代码 OpenCV3.0.0 VS2013 工程文件
- 数字图像处理 完整源代码
- [源码&文档] 基于OpenCV的室内目标跟踪
- 基于特征点匹配的视频稳像
- 制作自己的MFC MDI OPENCV程序框架
- 基于opencv开发的谷歌小恐龙的小游戏
- OpenCV图像模糊程序 by浅墨
- Opencv和vc++6.0一些常用图像处理算法程
- 图像处理C语言(读入图像,直方图均
- c++开发ocx入门实践三--基于opencv的简易
- opencv+c++实现人脸识别
- 基于OPENCV的完整图像处理程序
- MFC下opencv的图像处理源码
- OpenCV C++完整的车牌识别系统.rar
- vc++mfc经典数字图像处理程序
- MFC数字图像处理
评论
共有 条评论