角点检测,输出坐标
来源:互联网 发布:软件发展战略 编辑:程序博客网 时间:2024/03/29 19:58
来自毛星云:
//--------------------------------------【程序说明】-------------------------------------------//程序说明:《OpenCV3编程入门》OpenCV2版书本配套示例程序88//程序描述:亚像素级角点检测//开发测试所用操作系统: Windows 7 64bit//开发测试所用IDE版本:Visual Studio 2010//开发测试所用OpenCV版本:2.4.9 --------------------------------------------------//---------------------------------【头文件、命名空间包含部分】----------------------------//描述:包含程序所使用的头文件和命名空间//------------------------------------------------------------------------------------------------#include "opencv2/highgui/highgui.hpp"#include "opencv2/imgproc/imgproc.hpp"#include <iostream>using namespace cv;using namespace std;//-----------------------------------【宏定义部分】-------------------------------------------- // 描述:定义一些辅助宏 //----------------------------------------------------------------------------------------------#define WINDOW_NAME "【亚像素级角点检测】" //为窗口标题定义的宏 //-----------------------------------【全局变量声明部分】--------------------------------------// 描述:全局变量声明//-----------------------------------------------------------------------------------------------Mat g_srcImage, g_grayImage;int g_maxCornerNumber = 33;int g_maxTrackbarNumber = 500;RNG g_rng(12345);//初始化随机数生成器//-----------------------------【on_GoodFeaturesToTrack( )函数】----------------------------// 描述:响应滑动条移动消息的回调函数//----------------------------------------------------------------------------------------------void on_GoodFeaturesToTrack( int, void* ){//【1】对变量小于等于1时的处理if( g_maxCornerNumber <= 1 ) { g_maxCornerNumber = 1; }//【2】Shi-Tomasi算法(goodFeaturesToTrack函数)的参数准备vector<Point2f> corners;double qualityLevel = 0.01;//角点检测可接受的最小特征值double minDistance = 10;//角点之间的最小距离int blockSize = 3;//计算导数自相关矩阵时指定的邻域范围double k = 0.04;//权重系数Mat copy = g_srcImage.clone();//复制源图像到一个临时变量中,作为感兴趣区域//【3】进行Shi-Tomasi角点检测goodFeaturesToTrack( g_grayImage,//输入图像corners,//检测到的角点的输出向量g_maxCornerNumber,//角点的最大数量qualityLevel,//角点检测可接受的最小特征值minDistance,//角点之间的最小距离Mat(),//感兴趣区域blockSize,//计算导数自相关矩阵时指定的邻域范围false,//不使用Harris角点检测k );//权重系数//【4】输出文字信息cout<<"\n\t>-------------此次检测到的角点数量为:"<<corners.size()<<endl;for(int i=0;i<corners.size();i++)cout<<"原始坐标"<<i<<" ("<<corners[i].x<<","<<corners[i].y<<")"<<endl;//【5】绘制检测到的角点int r = 4;for( unsigned int i = 0; i < corners.size(); i++ ){ //以随机的颜色绘制出角点circle( copy, corners[i], r, Scalar(g_rng.uniform(0,255), g_rng.uniform(0,255),g_rng.uniform(0,255)), -1, 8, 0 ); }//【6】显示(更新)窗口imshow( WINDOW_NAME, copy );//【7】亚像素角点检测的参数设置Size winSize = Size( 5, 5 );Size zeroZone = Size( -1, -1 );TermCriteria criteria = TermCriteria( CV_TERMCRIT_EPS + CV_TERMCRIT_ITER, 40, 0.001 );//【8】计算出亚像素角点位置cornerSubPix( g_grayImage, corners, winSize, zeroZone, criteria );//【9】输出角点信息for( int i = 0; i < corners.size(); i++ ){ cout<<" \t>>精确角点坐标["<<i<<"] ("<<corners[i].x<<","<<corners[i].y<<")"<<endl; }}//-----------------------------------【ShowHelpText( )函数】----------------------------------// 描述:输出一些帮助信息//----------------------------------------------------------------------------------------------static void ShowHelpText( ){ printf("\n\n\t\t\t 当前使用的OpenCV版本为:" CV_VERSION );printf("\n\n ----------------------------------------------------------------------------\n");//输出一些帮助信息printf("\n\t欢迎来到【亚像素级角点检测】示例程序\n\n"); printf("\n\t请调整滑动条观察图像效果\n\n");}//--------------------------------------【main( )函数】-----------------------------------------// 描述:控制台应用程序的入口函数,我们的程序从这里开始执行//-----------------------------------------------------------------------------------------------int main( ){//【0】改变console字体颜色system("color 2F"); //【0】显示帮助文字ShowHelpText();//【1】载入源图像并将其转换为灰度图g_srcImage = imread("1.jpg", 1 );cvtColor( g_srcImage, g_grayImage, CV_BGR2GRAY );//【2】创建窗口和滑动条,并进行显示和回调函数初始化namedWindow( WINDOW_NAME, CV_WINDOW_AUTOSIZE );createTrackbar( "最大角点数", WINDOW_NAME, &g_maxCornerNumber, g_maxTrackbarNumber, on_GoodFeaturesToTrack );imshow( WINDOW_NAME, g_srcImage );on_GoodFeaturesToTrack( 0, 0 );waitKey(0);return(0);}
0 0
- 角点检测,输出坐标
- 第11周 输出点的坐标
- 角点检测,圆形检测
- 角点检测 susan角点检测
- 角点检测Harris角点检测
- 使用Python实现图像标记点的坐标输出
- 角点检测
- Harris 角点检测
- 角点检测
- 角点 检测
- 角点检测
- OpenCV角点检测
- 角点检测
- 角点检测算法
- Harris角点检测
- Harris角点检测
- 角点检测
- Moravec角点检测
- nil Nil NSNull NULL
- 数据库语言---SQL基本用法2(查询)
- 使用PendingIntent.getBrocast() 在 onReceive 中接受不到intent 的问题
- 变态跳台阶问题
- Android文件存储的问题:ClassLoader和实现Parcelable接口后 详解及用途
- 角点检测,输出坐标
- servlet 常用的api
- TCP基础知识:(一)TCP拥塞控制
- Webview展示网页,超链接使用默认浏览器打开
- WebView常见问题汇总以及解决方案
- 白盒测试中几种覆盖的区别
- 你认为人性最大的「恶」是什么?(转魏则西)
- 1019. 数字黑洞 (20)
- .NET 使用 .NET Core 跨平台运行