【练习8.7】cvGoodFeaturesToTrack确定图像强角点、cvFindCornerSubPix亚像素级角点检测...
题目要求 | 程序代码 | 结果图片 | 要言妙道 | 借鉴参考 |
题目要求:
黑色背景上创建一个白色拐角,使得这个角正好在整数值的坐标上,保存用OpenCV打开
a、找出并输出拐角的确切坐标
分别改变原始图像进行如下操作
b、用白边透明填充的圆将圆角遮住
c、用白边黑色填充的圆将圆角遮住
d、用黑色圆块将圆角遮住
程序代码:
1 // OpenCVExerciseTesting.cpp : 定义控制台应用程序的入口点。 2 // 3 // string file_full_name = "D:\\Work\\Work_Programming\\Source\\Image\\OpenCVExerciseImage\\第8章\\r20.jpg"; 4 5 6 #include "stdafx.h" 7 #include<string> 8 #include <cv.h> 9 #include <highgui.h> 10 #include <iostream> 11 #include<math.h> 12 13 #include <opencv2/legacy/legacy.hpp> 14 //#pragma comment(lib, "opencv_legacy2411.lib") 15 16 using namespace cv; 17 using namespace std; 18 19 //函数声明-->--->-->--->-->--->-->--->// 20 21 22 //<--<--<--<--<--<--<--<--<--函数声明// 23 24 int _tmain(int argc, _TCHAR* argv[]) 25 { 26 string file_full_name = "D:\\Work\\Work_Programming\\Source\\Image\\OpenCVExerciseImage\\第8章\\拐角.jpg"; 27 28 IplImage * image_source = cvLoadImage(file_full_name.c_str(), CV_LOAD_IMAGE_GRAYSCALE); 29 CV_Assert(image_source); 30 31 string file_full_name_2 = "D:\\Work\\Work_Programming\\Source\\Image\\OpenCVExerciseImage\\第8章\\拐角2.jpg"; 32 33 IplImage * image_source_2 = cvLoadImage(file_full_name_2.c_str(), CV_LOAD_IMAGE_GRAYSCALE); 34 CV_Assert(image_source_2); 35 36 IplImage * images[2] = { image_source, image_source_2 }; 37 38 string window_name = "角度图像"; 39 for (int i = 0; i < 2; ++i) 40 { 41 window_name = window_name + "。"; 42 IplImage * image_gray = cvCloneImage(images[i]); 43 IplImage * image_eig = cvCreateImage(cvGetSize(images[i]), IPL_DEPTH_32F, 1); 44 cvZero(image_eig); 45 IplImage* image_temp = cvCloneImage(image_eig); 46 47 int corner_count = 5; 48 CvPoint2D32f *corners = new CvPoint2D32f[corner_count]; 49 50 cvGoodFeaturesToTrack(image_gray, image_eig, image_temp, corners, &corner_count, 0.1, 10); 51 52 IplImage * image_corner = cvCloneImage(image_gray); 53 //cvZero(image_corner); 54 cout << "cvGoodFeaturesToTrack:" << endl; 55 for (int i = 0; i < corner_count; ++i) 56 { 57 cout << corners[i].x << " " << corners[i].y << endl; 58 cvDrawCircle(image_corner, cvPoint(corners[i].x, corners[i].y), 5, cvScalar(255)); 59 } 60 61 cvNamedWindow(window_name.c_str(), CV_WINDOW_AUTOSIZE); 62 cvShowImage(window_name.c_str(), image_corner); 63 64 int half_win_size = 3;//the window size will be 3+1+3=7 65 int iteration = 20; 66 double epislon = 0.1; 67 68 cvFindCornerSubPix(image_gray, corners, corner_count 69 , cvSize(half_win_size, half_win_size), cvSize(-1, -1) 70 , cvTermCriteria(CV_TERMCRIT_ITER | CV_TERMCRIT_EPS, iteration, epislon)); 71 72 IplImage * image_subPix = cvCloneImage(image_gray); 73 74 cout << "cvFindCornerSubPix:" << endl; 75 for (int i = 0; i < corner_count; ++i) 76 { 77 cout << corners[i].x << " " << corners[i].y << endl; 78 cvDrawCircle(image_subPix, cvPoint(corners[i].x, corners[i].y), 5, cvScalar(255)); 79 } 80 81 window_name = window_name + "。"; 82 cvShowImage(window_name.c_str(), image_subPix); 83 84 cvReleaseImage(&image_gray); 85 cvReleaseImage(&image_eig); 86 cvReleaseImage(&image_temp); 87 cvReleaseImage(&image_corner); 88 cvReleaseImage(&image_subPix); 89 } 90 91 cvWaitKey(0); 92 93 cvReleaseImage(&image_source); 94 cvReleaseImage(&image_source_2); 95 cvDestroyAllWindows(); 96 97 return 0; 98 }
结果图片:
要言妙道:
借鉴参考:
转载于:https://www.cnblogs.com/tingshuixuan2012/p/4518228.html
【练习8.7】cvGoodFeaturesToTrack确定图像强角点、cvFindCornerSubPix亚像素级角点检测...相关推荐
- OpenCV——角点检测原理分析(Harris,Shi-Tomasi、亚像素级角点检测)
一.角点(corner) 角点通常被定义为两条边的交点,或者说,角点的局部邻域应该具有两个不同区域的不同方向的边界.角点检测(Corner Detection)是计算机视觉系统中获取图像特征的一种方法 ...
- OpenCV中角点检测:Harris、Shi-Tomasi、亚像素级角点检测
1.角点的定义 角点通常被定义为两条边的交点,或者说,角点的局部邻域应该具有两个不同区域的不同方向的边界.比如,三角形有三个角,矩形有四个角,这些就是角点,也是他们叫做矩形.三角形的特征. 角点是个很 ...
- 《OpenCV3编程入门》学习笔记10 角点检测(三)亚像素级角点检测
10.3 亚像素级角点检测 10.3.1 亚像素级角点检测原理 1.原理: 假设起始角点在实际亚像素角点附近,检测所有q-p向量,下面两种情况点p梯度与q-p向量的点积均为0:(1)点p附近图像均 ...
- opencv亚像素边缘精度_亚像素级角点定位原理及opencv实现
为何需要进行亚像素定位? 数字图像通常是离散化成像素:每个像素对应一个整数坐标位置:整数坐标位置对于很多应用并不精确,比如跟踪.相机标定.图像配准.图像拼接以及三维重构:为达到有些应用的精确性,需要精 ...
- 亚像素级角点检测Opencv-cornerSubPix
Opencv-cornerSubPix原理介绍 若我们进行图像处理的目的不是提取用于识别的特征点而是进行几何测量,这通常需要更高的精度,而函数 goodFeaturesToTrack() 只能提供简单 ...
- OpenCV + CPP 系列(卅四)图像特征提取(亚像素级别角点检测)
文章目录 亚像素级别角点检测 演示像素坐标检测 亚像素级别角点检测 亚像素:在生成数字图像处理时(拍照等)我们是将物理世界中连续的图像进行了离散化处理.现实世界中颜色为连续的且有无数种类,成像到像素面 ...
- OpenCV之feature2d 模块. 2D特征框架(1)Harris 角点检测子 Shi-Tomasi角点检测子 定制化创建角点检测子 亚像素级的角点检测 特征点检测
Harris 角点检测子 目标 本教程中我们将涉及: 有哪些特征?它们有什么用? 使用函数 cornerHarris 通过 Harris-Stephens方法检测角点. 理论 有哪些特征? 在计算机视 ...
- OpenCv-C++-亚像素级别角点检测(检测子像素中的corner的位置)
使用亚像素级别角点检测,返回角点的浮点数值,它的精度比整数像素更准确.可以用cornerSubPix()函数将角点定位到子像素,从而取得亚像素级别的角点检测效果. 使用函数: void cv::cor ...
- 亚像素级精确度的角点
有时我们需要最大精度的角点检测.OpenCV为我们提供了函cv2.cornerSubPix(), 它可以提供亚像素级别的角点检测.下面是一个例子.首先我们要找到 Harris 角点,然后将角点的重心传 ...
- 萌新学习手册:亚像素级别角点检测
在现实应用中我们的角点往往并不是整数,所以为了提高我们寻找角点的精确程度,我们需要进行处理,一般有三种方法 1.插值方法 2.基于图像矩计算 3.图线拟合(高斯曲面,多项式,椭圆曲面)其中高斯曲面最为 ...
最新文章
- Android 自定义View —— Paint
- 共基极放大电路_「模拟电子技术」运算放大电路的共基极、共射极、共集电极接法...
- 利用 CoreGraphics 绘制折线图
- Et.parse(xml) #39gbk#39 codec cant decode byte
- v-show 与 v-if区别
- [react] render在什么时候会被触发?
- 【机器学习】 - 关于Keras的深入理解
- Linux打开bashrc权限不够,bash-4.2$ bash: /home/test/.bashrc: 权限不够
- Phaser Matter Collision Plugin 碰撞插件 -- iFiero技术分享
- JavaScript继承详解(二)
- 网页优化系列三:使用压缩后置viewstate
- JAVA入门[5]-初步搭建SpringMVC站点
- python3 荣誉证书(奖状)批量打印
- 计算机圣诞节教案,2010我们的圣诞节(2010圣诞节教案)
- 2019百度之星初赛第五题
- 基于openstack的云桌面开源框架
- mybatis.org/dtd/mybatis-generator-config_1_0.dtd标红
- 超全的电商数据指标体系分享,年底数据分析用得上
- python去除图像光照不均匀_python+opencv——去除图像光照不均匀
- 曾经连过的WiFi密码查询
热门文章
- 【BERT】BERT中CLS效果真的好嘛?这篇文章告诉你答案
- 百度工程师带来干货分享,助你转型AI应用工程师!
- 【比赛】智源计算所-互联网虚假新闻检测挑战赛(冠军)方案分享,代码已开源...
- 只知道CS224N?斯坦福最新推出NLU公开课CS224U
- 20200317_决策树预测贷款申请
- numpy—np.tensordot
- pandas—pd.DataFrame.sample
- 安全数据通信:究竟什么是JSSE?
- Spark与深度学习框架——H2O、deeplearning4j、SparkNet
- LoadRunner脚本日志定位问题案例