- 博客(83)
- 收藏
- 关注
原创 OpenCV学习(83)
特征检测与匹配(5):ORB特征提取一,ORB算法概述;二,相关概念认知;三,ORB类相关源码简单分析;四,示例程序:ORB算法描述与匹配;一,ORB算法概述二,相关概念认知三,ORB类相关源码简单分析四,示例程序:ORB算法描述与匹配...
2022-03-24 20:22:33 3846
原创 OpenCV学习(82)
特征检测与匹配(4):寻找已知物体一,寻找透视变换:findHomography()函数;二,进行透视矩阵变换:perspectiveTransform()函数;三,示例程序:寻找已知物体;一,寻找透视变换:findHomography()函数二,进行透视矩阵变换:perspectiveTransform()函数三,示例程序:寻找已知物体...
2022-03-23 19:56:03 5479
原创 OpenCV学习(81)
特征检测与匹配(3):使用FLANN进行特征点匹配一,FlannBasedMatcher类的简单分析;二,找到最佳匹配:DescriptorMatcher::match方法;三,示例程序:使用FLANN进行特征点匹配;四,综合示例程序:FLANN结合SURF进行关键点的描述和匹配;五,综合示例程序:SIFT配合暴力匹配进行关键点描述和提取;一,FlannBasedMatcher类的简单分析二,找到最佳匹配:DescriptorMatcher::match方法三,示例程序:使用
2022-03-22 19:34:21 4588
原创 OpenCV学习(80)
特征检测与匹配(2):SURF特征提取一,绘制匹配点:drawMatches()函数;二,BruteForceMatcher类源码分析;三,示例程序:SURF特征提取;一,绘制匹配点:drawMatches()函数二,BruteForceMatcher类源码分析三,示例程序:SURF特征提取...
2022-03-21 20:07:18 1804
原创 OpenCV学习(79)
特征检测与匹配(1):SURF特征点检测一,SURF算法概览;二,SURF算法原理;三,SURF类相关OpenCV源码剖析;四,绘制关键点:drawKeypoints()函数;五,KeyPoint类;六,示例程序:SURF特征点检测;一,SURF算法概览SURF,英文全称为SpeededUp Robust Features,直译为“加速版的具有鲁棒性的特征“算法,由Bay在2006年首次提出。SURF是尺度不变特征变换算法(SIFT算法)的加速版。一般来说,标准的SURF
2022-03-20 16:55:37 1064
原创 OpenCV学习(78)
绝点检测(3):亚像素级角点检测一,背景概述;二,寻找亚像素角点: cornerSubPix()函数;三,综合示例:亚像素级角点检测;一,背景概述 若我们进行图像处理的目的不是提取用于识别的特征点而是进行几何测量,这通常需要更高的精度,而函数 goodFeaturesToTrack()只能提供简单的像素的坐标值,也就是说,有时候会需要实数坐标值而不是整数坐标值。 亚像素级角点检测的位置在摄像机标定、跟踪并重建摄像机的轨迹,或者重建被跟踪目标的三维结构时,是一...
2022-03-17 20:57:08 2032
原创 OpenCV学习(77)
绝点检测(2):Shi一Tomasi角点检测一,Shi-Tomasi角点检测概述;二,确定图像强角点:goodFeaturesToTrackO函数;三,综合示例:Shi-Tomasi角点检测;一,Shi-Tomasi角点检测概述二,确定图像强角点:goodFeaturesToTrackO函数三,综合示例:Shi-Tomasi角点检测...
2022-03-17 20:21:29 1332
原创 OpenCV学习(76)
绝点检测(1):Harris角点检测一,兴趣点与角点;二,角点检测;三,harris角点检测;四,实现Harris角点检测: cornerHarris()函数;五,综合示例: harris角点检测与绘制;一,兴趣点与角点 在图像处理和与计算机视觉领域,兴趣点(interest points),也被称作关键点(key points)、特征点(feature points)。它被大量用于解决物体识别、图像识别、图像匹配、视觉跟踪、三维重建等一系列的问题。我们不再观察整...
2022-03-16 16:45:26 1958
原创 OpenCV学习(75)
直方图与匹配(4):模板匹配一,模板匹配的概念与原理;二,实现模板匹配:matchTemplate()函数;三,综合示例:模板匹配;一,模板匹配的概念与原理二,实现模板匹配:matchTemplate()函数三,综合示例:模板匹配...
2022-03-16 16:25:12 470
原创 OpenCV学习(74)
直方图与匹配(3):反向投影一,引言;二,反向投影的工作原理;三,反向投影的作用;四,反向投影的结果;五,计算反向投影:calcBackProject()函数;六,通道复制:mixChannels()函数;七,综合程序:反向投影;一,引言 如果一幅图像的区域中显示的是一种结构纹理或者一个独特的物体,那么这个区域的直方图可以看作一个概率函数,其表现形式是某个像素属于该纹理或物体的概率。 而反向投影(back projection)就是一种记...
2022-03-15 19:37:24 1885
原创 OpenCV学习(73)
直方图与匹配(2):直方图对比一,直方图对比概要;二,对比直方图: compareHist()函数;三,示例程序:直方图对比;一,直方图对比概要二,对比直方图: compareHist()函数三,示例程序:直方图对比...
2022-03-15 17:01:45 874
原创 OpenCV学习(72)
直方图与匹配(1):一,图像直方图概述;二,直方图的计算与绘制①计算直方图:calcHist()函数;②找寻最值:minMaxLoc()函数;③示例程序:绘制H——S直方图;④示例程序:计算并绘制图像一维直方图;⑤示例程序:绘制RGB三色直方图;一,图像直方图概述; 直方图广泛运用于很多计算机视觉运用当中,通过标记帧与帧之间显著的边缘和颜色的统计发化,不0田以l确定图像中的兴趣点。边缘、色彩、用度等且特征的直方图所构成“标签”,用以确定图像中的兴趣点。边缘、色...
2022-03-12 19:26:00 1925
原创 OpenCV学习(71)
图像轮廓与图像分隔修复(9):图像修补一,图像修补的概念认知;二,实现图像修补:inpaint()函数;三,综合示例程序:图像修补;一,图像修补的概念认知 在实际应用中,我们的图像常常会被噪声腐蚀,这些噪声或者是镜头上的灰尘或水滴,或者是旧照片的划痕,或者由于图像的部分本身已经损坏。而“图像修复”( Inpainting),就是妙手回春,解决这些问题的良方。图像修复技术简单来说,就是利用那些已经被破坏区域的边缘,即边缘的颜色和结构,繁殖和混合到损坏的图像中,以达到图像修补的目...
2022-03-12 18:42:43 1848
原创 OpenCV学习(70)
图像轮廓与图像分隔修复(8):分水岭算法一,分水岭算法的认知;二,实现分水岭算法: watershed()函数;三,综合示例程序:分水岭算法;一,分水岭算法的认知 在许多实际运用中,我们需要分割图像,但无法从背景图像中获得有用信息。分水岭算法 ( watershed algorithm)在这方面往往是非常有效的。此算法可以将图像中的边缘转化成“山脉”,将均匀区域转化为“山谷”,这样有助于分割目标。 分水岭算法,是一种基于拓扑理论的数学形态学的分割方法,其...
2022-03-11 18:02:07 83
原创 OpenCV学习(69)
图像轮廓与图像分隔修复(7):图像的矩一,矩的计算:momentsO)函数;二,计算轮廓面积:contourArea()的数;三,计算轮廓长度: arcLength()函数;四,综合示例程序:查找和绘制图像轮廓矩;一,矩的计算:momentsO)函数moments()函数用于计算多边形和光栅形状的最高达三阶的所有矩。矩用来计算形状的重心、面积,主轴和其他形状特征,如 7Hu不变量等。 ·第一个参数,InputArray类型的array,输入参数,可以是光栅图像(单...
2022-03-11 17:38:04 1933
原创 OpenCV学习(68)
图像轮廓与图像分隔修复(6):使用多边形将轮廓包围八,综合示例程序:使用多边形将轮廓包围 经过此前两个基础示例程序的学习,相信大家应该对minAreaRect和minEnclosingCircle函数的用法有了一定的认识。这两个示例程序中,处理的轮廓都是程序自己随机生成的点。在接下来这个综合一点的示例程序中,让我们载入一幅图像,用上文中学到的函数来创建包围轮廓的矩形和圆形边界框。程序详细注释的代码如下://-------------【头文件、命名空间部分】------------...
2022-03-10 20:35:44 583 1
原创 OpenCV学习(67)
图像轮廓与图像分隔修复(5):使用多边形将轮廓包围一,返回外部矩形边界:boundingRect()函数;二,寻找最小包围矩形:minAreaRect()函数;三,寻找最小包围圆形:minEnclosingCircle()函数;四,用椭圆拟合二维点集:fitEllipse()函数;五,逼近多边形曲线:approxPolyDP()函数;六,基础示例程序:创建包围轮廓的矩形边界;七,基础示例程序:创建包围轮廓的圆形边界;一,返回外部矩形边界:boundingRect()函数
2022-03-09 21:08:46 661
原创 OpenCV学习(66)
图像轮廓与图像分隔修复(4):寻找物体的凸包四,综合示例程序:寻找和绘制物体的凸包 这一节的综合示例程序,依然是结合滑动条,通过滑动条控制阈值,来得到不同的凸包检测效果图。程序详细注释的源代码如下。//-------------【头文件、命名空间部分】--------------// 描述:包含程序所依赖的头文件和命名空间//---------------------------------------------------#include <opencv2/hig...
2022-03-08 18:09:50 403
原创 OpenCV学习(65)
图像轮廓与图像分隔修复(3):寻找物体的凸包一,凸包;二,寻找凸包:convexHull()函数;三,基础示例程序:凸包检测基础;一,凸包 凸包(Convex Hull)是一个计算几何(图形学)中常见的概念。简单来说,给定二维平面上的点集,凸包就是将最外层的点连接起来构成的凸多边型,它是能包含点集中所有点的。理解物体形状或轮廓的一种比较有用的方法便是计算一个物体的凸包,然后计算其凸缺陷(convexity defects)。很多复杂物体的特性能很好地被这种缺陷表现出来。...
2022-03-08 18:02:37 999
原创 OpenCV学习(64)
图像轮廓与图像分隔修复(2):4四,综合示例程序:查找并绘制轮廓此程序利用了图像平滑技术(blur()函数)和边缘检测技术(canny()函数),根据滑动条的调节,可以动态地检测出图形的轮廓。代码如下://-------------【头文件、命名空间部分】--------------// 描述:包含程序所依赖的头文件和命名空间//---------------------------------------------------#include <opencv2/high.
2022-03-07 20:45:18 1586
原创 OpenCV学习(63)
图像轮廓与图像分隔修复(1):查找并绘制轮廓一,寻找轮廓: findContours()函数;二,绘制轮廓: drawContours(函数;三,基础示例程序:轮廓查找;一,寻找轮廓: findContours()函数 第一个参数,InputArray类型的 image,输入图像,即源图像,填Mat类的对象即可,且需为8位单通道图像。图像的非零像素被视为1,0像素值被保留为 0,所以图像为二进制。我们可以使用compare()、inrange()、threshold(...
2022-03-07 20:32:52 2611
原创 OpenCV学习(62)
图像变换(16):直方图均衡化一,直方图均衡化的简单理解;二,直方图均衡化的概念和特点;三,实现直方图均衡化:equalizeHist()函数;四,示例程序:直方图均衡化;一,直方图均衡化的简单理解 很多时候,我们用相机拍摄的照片的效果往往会不尽人意。这时,可以对这些图像进行一些处理,来扩大图像的动态范围。这种情况下最常用到的技术就是直方图均衡化。未经均衡化的图片范例如图7.41、7.42所示。 在图7.41中,我们可以看到,左边的图像比较淡,因为其...
2022-03-06 19:26:21 699
原创 OpenCV学习(61)
图像变换(15):仿射变换五,示例程序:仿射变换代码如下://-------------【头文件、命名空间部分】--------------// 描述:包含程序所依赖的头文件和命名空间//---------------------------------------------------#include <opencv2/highgui/highgui.hpp>#include <opencv2/imgproc/imgproc.hpp>#include .
2022-03-06 15:52:00 209
原创 OpenCV学习(60)
图像变换(14):仿射变换一,认识仿射变换;二,仿射变换的求法;三,进行仿射变换:warpAffine()函数;四,计算二维旋转变换矩阵:getRotationMatrix2D()函数;一,认识仿射变换 仿射变换(Affine Transformation或 Affine Map),又称仿射映射,是指在几何中,一个向量空间进行一次线性变换并接上一个平移,变换为另一个向量空间的过程。它保持了二维图形的“平直性”(直线经过变换之后依然是直线)和“平行性”(二维图形之间的相对位...
2022-03-06 15:44:03 589
原创 OpenCV学习(59)
图像变换(13):重映射四,综合示例程序:实现多种重映射先放出以remap为核心的综合示例程序,可以用按键控制四种不同的映射模式。如图7.31所示。代码如下://---------------------------------【头文件、命名空间包含部分】----------------------------// 描述:包含程序所使用的头文件和命名空间//-------------------------------------------------------------.
2022-03-06 15:24:30 106
原创 OpenCV学习(58)
图像变换(12):重映射一,重映射的概念;二,实现重映射:remapO函数;三,基础示例程序:基本重映射一,重映射的概念重映射,就是把一幅图像中某位置的像素放置到另一个图片指定位置的过程。为了完成映射过程,需要获得一些插值为非整数像素的坐标,因为源图像与目标图像的像素坐标不是一一对应的。一般情况下,我们通过重映射来表达每个像素的位置(x,y),像这样:图像会按照x轴方向发生翻转。那么,源图像和效果图分别如图7.27和7.28所示。二,实现重映射:remapO函数rema
2022-03-02 19:24:50 1669 1
原创 OpenCV学习(57)
图像变换(11):综合示例:霍夫变换 这次的综合示例,我们在 HoughLinesP函数的基础上,为其添加了用于控制其第五个参数阈值 threshold的滚动条,因此可以通过调节滚动条来改变阈值,从而动态地控制霍夫线变换检测的线条多少。详细注释的程序源代码如下。//-------------【头文件、命名空间部分】--------------// 描述:包含程序所依赖的头文件和命名空间//-----------------------------------------...
2022-03-01 20:48:55 870
原创 OpenCV学习(56)
图像变换(10):霍夫圆变换:HoughCircles()函数 HoughCircles函数可以利用霍夫变换算法检测出灰度图中的圆。它相比之前的HoughLines和 HoughLinesP,比较明显的一个区别是不需要源图是二值的,而HoughLines和 HoughLinesP都需要源图为二值图像。 第一个参数,InputArray类型的image,输入图像,即源图像,需为8位的灰度单通道图像。 第二个参数,InputArray类型的circles,...
2022-03-01 19:57:46 284
原创 OpenCV学习(55)
图像变换(9):一,霍夫圆变换;二,霍夫梯度法的原理;三,霍夫梯度法的缺点一,霍夫圆变换 霍夫圆变换的基本原理和上面讲的霍夫线变化大体上是很类似的,只是点对应的二维极径极角空间被三维的圆心点x、y和半径r空间取代。说“大体上类似”的原因是,如果完全用相同的方法的话,累加平面会被三维的累加容器所代替一一在这三维中,一维是x,一维是y,另外一维是圆的半径r。这就意味着需要大量的内存而且执行效率会很低,速度会很慢。 对直线来说,一条直线能由参数极径极角(r,0))表示.而对圆...
2022-02-28 20:33:48 1066 1
原创 OpenCV学习(54)
图像变换(8):累计概率霍夫变换: HoughLinesP()函数此函数在 HoughLines的基础上,在末尾加了一个代表 Probabilistic(概率)的P,表明它可以采用累计概率霍夫变换(PPHT)来找出二值图像中的直线。 第一个参数,InputArray类型的 image,输入图像,即源图像。需为8位的单通道二进制图像,可以将任意的源图载入进来后由函数修改成此格式后,再填在这里。 第二个参数,InputArray类型的 lines,经过调用HoughLine...
2022-02-27 20:47:26 573
原创 OpenCV学习(53)
图像变换(7):标准霍夫变换:HoughLines()函数此函数可以找出采用标准霍夫变换的二值图像线条。在 OpenCV中,我们可以用其来调用标准霍夫变换SHT和多尺度霍夫变换 MSHT的 OpenCV内建算法。 第一个参数,InputArray类型的image,输入图像,即源图像。需为8位的单通道二进制图像,可以将任意的源图载入进来,并由函数修改成此格式后,再填在这里。 第二个参数,InputArray类型的lines,经过调用HoughLines函数后储存了霍夫...
2022-02-27 20:36:55 1071 4
原创 OpenCV学习(52)
图像变换(6):霍夫变换一,霍夫变换概述二,OpenCV中的霍夫线变换三,霍夫线变换的原理 在图像处理和计算机视觉领域中,如何从当前的图像中提取所需要的特征信息是图像识别的关键所在。在许多应用场合中需要快速准确地检测出直线或者圆。其中一种非常有效的解决问题的方法是霍夫(Hough)变换,其为图像处理中从图像中识别几何形状的基本方法之一,应用很广泛,也有很多改进算法。最基本的霍夫变换是从黑白图像中检测直线(线段)。本节就将介绍OpenCV中霍夫变换的使用方法和相关知识。一,霍夫变换...
2022-02-25 19:20:33 90
原创 OpenCV学习(51)
图像变换(5):基于OpenCV的边缘检测六,综合示例:边缘检测 这个示例程序中,分别演示了canny边缘检测、sobel边缘检测、scharr 滤波器的使用,经过详细注释的的代码如下。代码如下://---------------【头文件、命名空间包含部分】------------// 描述:包含程序所依赖的头文件和命名空间//-------------------------------------------------------#include <o...
2022-02-25 19:02:41 70
原创 OpenCV学习(50)
图像变换(4):基于OpenCV的边缘检测五,scharr滤波器1.计算图像差分:Scharr()函数2.示例程序:Scharr滤波器五,scharr滤波器我们一般直接称scharr为滤波器,而不是算子。上文已经讲到,它在OpenCV中主要是配合Sobel算子的运算而存在的。下面让我们直接来看看其函数讲解。1.计算图像差分:Scharr()函数使用Scharr滤波器运算符计算x或y方向的图像差分。其实它的参数变量和Sobel基本上是一样的,除了没有ksize核的大小。(
2022-02-24 20:25:39 739
原创 OpenCV学习(49)
图像变换(3):基于OpenCV的边缘检测四;Laplacian算子1. Laplacian算子简介2.计算拉普拉斯变换: Laplacian()函数3.示例程序: Laplacian算子的使用四;Laplacian算子1. Laplacian算子简介 Laplacian算子是n维欧几里德空间中的一个二阶微分算子,定义为梯度grad的散度div。因此如果f是二阶可微的实函数,则f的拉普拉斯算子定义如下。 (1)f的拉普拉斯算子也是笛卡儿坐标系xi中的所...
2022-02-24 20:08:51 745
原创 OpenCV学习(48)
图像变换(2):基于OpenCV的边缘检测三,sobel算子;1. sobel算子的基本概念2. sobel算子的计算过程3.使用Sobel算子:Sobel()函数4.示例程序:Sobel算子的使用三,sobel算子1. sobel算子的基本概念 Sobel 算子是一个主要用于边缘检测的离散微分算子( discrete differentiationoperator)。它结合了高斯平滑和微分求导,用来计算图像灰度函数的近似梯度。在图像的任何一点使用此算子,都将会产...
2022-02-24 19:45:41 929
原创 OpenCV学习(47)
图像变换(1):基于OpenCV的边缘检测一,边缘检测的一般步骤;二,canny算子;一,边缘检测的一般步骤1.【第一步】滤波 边缘检测的算法主要是基于图像强度的一阶和二阶导数,但导数通常对噪声很敏感,因此必须采用滤波器来改善与噪声有关的边缘检测器的性能。常见的滤波方法主要有高斯滤波,即采用离散化的高斯函数产生一组归一化的高斯核,然后基于高斯核函数对图像灰度矩阵的每一点进行加权求和。2.【第二步】增强 增强边缘的基础是确定图像各点邻域强度的变化值。增强算法可以将图像...
2022-02-22 21:26:03 348
原创 OpenCV学习(46)
图像处理(7):示例程序:基本阈值操作讲解完这个函数,让我们看一个调用示例程序,这个示例程序演示了基本阈值操作的方方面面。此程序可以通过按键,在不同的阈值模式之间切换,操作说明如图6.72所示。//----------------—----【头文件、命名空间包含部分】--------------------// 描述:包含程序所依赖的头文件和命名空间//----------------------—-—------------------------------------------
2022-02-21 22:51:59 422
原创 OpenCV学习(45)
图像处理(6):阈值化一,固定阈值操作:ThresholdO函数二,自适应阈值操作: adaptiveThresholdO函数 在对各种图形进行处理操作的过程中,我们常常需要对图像中的像素做出取舍与决策,直接剔除一些低于或者高于一定值的像素。 阈值可以被视作最简单的图像分割方法。比如,从一副图像中利用阈值分割出我们需要的物体部分(当然这里的物体可以是一部分或者整体)。这样的图像分割方法基于图像中物体与背景之间的灰度差异,而且此分割属于像素级的分割。为了从一副图像中提取出...
2022-02-19 19:46:01 881
原创 OpenCV学习(44)
图像处理(5):综合示例:图像金字塔与图片尺寸缩放这个示例程序中,分别演示了用resize,pryUp,pryDown来让源图像进行放大缩小的操作,分别用键盘按键1、2、3、4、A、D、W、S来控制图片的放大与缩小。如图6.67所示。代码如下:#include <opencv2/opencv.hpp>#include<opencv2/core/core.hpp>#include"opencv2/highgui/highgui.hpp"#include<.
2022-02-18 19:31:04 84
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人