资源简介
运用了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个文件信息
相关资源
- 用C语言进行数字图像处理
- 人脸识别(opencv_facedetect_v4l2)
- 基于opencv的模板匹配代码
- basler相机图像采集和显示
- opencv图片扫描以及校正
- opencv手部轮廓识别以及轨迹识别
- opencv2 3D标定.cpp
- 基于opencv漫水填充算法综合
- opencv激光中心线的提取
- Visual+C++数字图像处理-谢凤英-源代码
- OpenCV Computer Vision Application Programming
- 基于图割的图像分割OpenCV+MFC实现
- 识别魔方颜色
- opencv版俄罗斯方块源码
- Bmp图像处理.zip
- VC++数字图像处理典型算法及实现
- VS2013 / MFC + OpenCV 2.4.9实现视频的播放
- 粒子滤波器+目标跟踪的C++实现,VS2
- 张平OpenCV算法精讲基于python和C++教材
- VC6.0 完整的图像处理程序 运用了大量
- VC图像处理-用Canny算子提取边缘
- 虹膜识别开源代码OSIRIS4.1基于opencv
- Sift特征点提取与匹配opencv库
- YCbCr、混合高斯以及YCbCg肤色检测模型
- 光流法代码
- 数字图像处理扑克牌识别程序
- 数字图像处理与机器视觉——Visual
- 基于leapmotion的HMM手势识别
- C++ 图像处理283241
- OpenCV打开摄像机显示在MFC窗口工程源
评论
共有 条评论