OpenCV
沉默的舞台剧
Keep running
展开
-
OpenCV学习21_ 角点检测
角点检测(Corner Detection)是计算机视觉系统中用来获得图像特征的一种方法,广泛应用于运动检测、图像匹配、视频跟踪、三维建模和目标识别等领域中,也称为特征点检测。角点通常被定义为两条边的交点,更严格地说法是,角点的局部邻域应该具有两个不同区域的不同方向的边界。而实际应用中,大多数所谓的角点检测方法检测的是拥有特定特征的图像点,而不仅仅是“角点”。这些特征点在图像中有具体的坐标,并具有某些数学特征,如局部最大或最小灰度、某些梯度特征等。一、harris角点检测harris角点检测是一种直.原创 2020-12-19 11:40:26 · 471 阅读 · 1 评论 -
OpenCV学习20_ 反向投影与模板匹配
一、反向投影如果一幅图像的区域中显示的是一种结构纹理或者一个独特的物体,那么这个区域的直方图可以看作一个概率函数,其表现形式是某个像素属于该纹理或物体的概率。而反向投影(back projection)就是一种记录给定图像中的像素点如何适应直方图模型像素分布方式的一种方法。简单的讲,所谓反向投影就是首先计算某一特征的直方图模型,然后使用模型去寻找图像中存在的该特征的方法。1.1 原理使用模型直方图来检测测试图像中的区域。以下是检测步骤。(1)对测试图像中的每个像素(p(i,j)),获取色调数据.原创 2020-12-14 21:04:31 · 548 阅读 · 0 评论 -
OpenCV学习19_ 直方图与对比
在进行物体图像和视频信息分析的过程中,我们常常会习惯于将眼中看到的物体用直方图(histogram)表示出来,得到比较直观的数据官感展示。直方图可以用来描述各种不同的参数和事物,如物体的色彩分布、物体边缘梯度模板,以及表示目标位置的当前假设的概率分布。一、直方图1.1 概述直方图广泛运用于很多计算机视觉运用当中,通过标记帧与帧之间显著的边缘和颜色的统计变化,来检测视频中场景的变化。在每个兴趣点设置一个有相近·特征的直方图所构成“标签”,用以确定图像中的兴趣点。边缘、色彩、角度等直方图构成了可以被传递给原创 2020-12-12 21:35:46 · 425 阅读 · 0 评论 -
OpenCV学习18_ 图像修复
一、图像修补在实际应用中,我们的图像常常会被噪声腐蚀,这些噪声或者是镜头上的灰尘或水滴,或者是旧照片的划痕,或者由于图像的部分本身已经损坏。而“图像修复” (Inpainting),就是妙手回春,解决这些问题的良方。图像修复技术简单来说,就是利用那些已经被破坏区域的边缘,即边缘的颜色和结构,繁殖和混合到损坏的图像中,以达到图像修补的目的。如果被破坏的区域不是太大,并且在被破坏区域边缘包含足够多的纹理和颜色,那么图像修补技术可以很好地恢复图像。当然,当图像损坏区域过大时,我们“妙手回春”的能力也是有限的.原创 2020-12-12 07:52:05 · 699 阅读 · 0 评论 -
OpenCV学习17_ 分水岭算法
一、分水岭算法在许多实际运用中,我们需要分割图像,但无法从背景图像中获得有用信息。分水岭算法(watershed algorithm)在这方面往往是非常有效的。此算法可以将图像中的边缘转化成“山脉”,将均匀区域转化为“山谷”,这样有助于分割目标。分水岭算法,是一种基于拓扑理论的数学形态学的分割方法,其基本思想是把图像看作是测地学上的拓扑地貌,图像中每一点像素的灰度值表示该点的海拔高度,每一个局部极小值及其影响区域称为集水盆,而集水盆的边界则形成分水岭。分水岭的概念和形成可以通过模拟浸入过程来说明:在每一原创 2020-12-10 22:15:49 · 1762 阅读 · 0 评论 -
OpenCV学习16_图像的矩
一、图像的矩矩函数在图像分析中有着广泛的应用,如模式识别、目标分类、目标识别与方位估计、图像编码与重构等。一个从一幅数字图形中计算出来的矩集,通常描述了该图像形状的全局特征,并提供了大量的关于该图像不同类型的几何特性信息,比如大小、位置、方向及形状等。图像矩的这种特性描述能力被广泛地应用在各种图像处理、计算机视觉和机器人技术领域的目标识别与方位估计中。一阶矩与形状有关,二阶矩显示曲线围绕直线平均值的扩展程度,三阶矩则是关于平均值的对称性的测量。由二阶矩和三阶矩可以导出一组共7个不变矩。而不变矩是图像的统.原创 2020-12-08 21:19:22 · 172 阅读 · 0 评论 -
OpenCV学习15_图像物体凸包及轮廓包围
一、物体凸包凸包(Convex Hull)是一个计算几何(图形学)中常见的概念。简单来说,给定二维平面上的点集,凸包就是将最外层的点连接起来构成的凸多边型,它是能包含点集中所有点的。理解物体形状或轮廓的一种比较有用的方法便是计算一个物体的凸包,然后计算其凸缺陷(convexity defects),很多复杂物体的特性能很好地被这种缺陷表现出来。1.1 寻找凸包: convexHull()函数convexHull()函数用于寻找图像点集中的凸包,其原型声明如下。C++: void convexHul.原创 2020-12-06 10:46:22 · 1726 阅读 · 0 评论 -
OpenCV学习14_图像轮廓查找及绘制
一、查找轮廓查找一个轮廓一般对应一系列的点,也就是图像中的一条曲线。其表示方法可能根据不同的情况而有所不同。在OpenCV中,可以用findContours()函数从二值图像中查找轮廓1.1寻找轮廓: findContours()函数findContours()函数用于在二值图像中寻找轮廓。C++: void findcontours (InputoutputArray image, OutputArrayofArrays contours, OutputArray hierarchy, int .原创 2020-12-05 13:42:04 · 514 阅读 · 0 评论 -
OpenCV学习13_仿射变换与直方图均衡
一、仿射变换仿射变换(Affine Transformation或Affine Map),又称仿射映射,是指在几何中,一个向量空间进行一次线性变换并接上一个平移,变换为另一个向量空间的过程。它保持了二维图形的“平直性”(直线经过变换之后依然是直线)和“平行性”(二维图形之间的相对位置关系保持不变,平行线依然是平行线,且直线上点的位置顺序不变)。一个任意的仿射变换都能表示为乘以一个矩阵(线性变换)接着再加上一个向量(平移)的形式。那么,我们能够用仿射变换来表示如下三种常见的变换形式:旋转, rota原创 2020-12-02 23:15:51 · 305 阅读 · 0 评论 -
OpenCV学习12_霍夫变换与重映射
一、霍夫变换在图像处理和计算机视觉领域中,如何从当前的图像中提取所需要的特征信息是图像识别的关键所在。在许多应用场合中需要快速准确地检测出直线或者圆。其中一种非常有效的解决问题的方法是霍夫(Hough)变换,其为图像处理中从图像中识别几何形状的基本方法之一,应用很广泛,也有很多改进算法。最基本的霍夫变换是从黑白图像中检测直线(线段)。本部分就将介绍OpenCV中霍夫变换的使用方法和相关知识。1.1 霍夫线变换我们知道,霍夫线变换是一种用来寻找直线的方法,在使用霍夫线变换之前,首先要对图像进行边缘检测.原创 2020-11-29 11:55:23 · 302 阅读 · 0 评论 -
OpenCV学习11_边缘检测
本部分,我们将一起学习OpenCV中边缘检测的各种算子和滤波器-Canny算子、Sobel算子、Laplacian算子以及Scharr滤波器。一、边缘检测步骤在具体介绍之前,先来一起看看边缘检测的一般步骤。1.【第一步】滤波边缘检测的算法主要是基于图像强度的一阶和二阶导数,但导数通常对噪声很敏感,因此必须采用滤波器来改善与噪声有关的边缘检测器的性能。常见的滤波方法主要有高斯滤波,即采用离散化的高斯函数产生一组归一化的高斯核,然后基于高斯核函数对图像灰度矩阵的每一点进行加权求和。2.【第二步】增强原创 2020-11-28 18:13:28 · 897 阅读 · 0 评论 -
OpenCV学习10_图像minmap与阈值化
一、图像金字塔(minmap)我们经常会将某种尺寸的图像转换为其他尺寸的图像,如果要放大或者缩小图片的尺寸,笼统来说,可以使用OpenCV提供的如下两种方法。resize函数。这是最直接的方式pyrUpo), pyrDown()函数。即图像金字塔相关的两个函数,对图像进行向上采样和向下采样的操作。pyrUp、pyrDown其实和专门用作放大缩小图像尺寸的resize在功能上差不多,披着图像金字塔的皮,说白了还是在对图像进行放大和缩小操作。另外需要指出的是, pyrUp, pyrDown在Ope.原创 2020-11-28 11:50:55 · 503 阅读 · 0 评论 -
OpenCV学习09_图像漫水填充
一、基本思想所谓漫水填充,简单来说,就是自动选中了和种子点相连的区域,接着将该区域替换成指定的颜色 ,这是个非常有用的功能,经常用来标记或者分离图像的部分进行处理或分析。漫水填充也可以用来从输入图像获取掩码区域,掩码会加速处理过程,或者只处理掩码指定的像素点。以此填充算法为基础,类似PhotoShop的魔术棒选择工具就很容易实现了。漫水填充(FloodFill)是查找和种子点连通的颜色相同的点,魔术棒选择工具则是查找和种子点连通的颜色相近的点,把和初始种子像素颜色相近的点压进栈做为新种子。在OpenCV原创 2020-11-23 23:23:41 · 440 阅读 · 0 评论 -
OpenCV学习08_形态学滤波
形态学(morphology)一词通常表示生物学的一个分支,该分支主要研究动植物的形态和结构。而我们图像处理中的形态学,往往指的是数学形态学。下面一起来了解数学形态学的概念。数学形态学(Mathematical morphology)是一门建立在格论和拓扑学基础之上的图像分析学科,是数学形态学图像处理的基本理论。其基本的运算包括:二值腐蚀和膨胀、二值开闭运算、骨架抽取、极限腐蚀、击中击不中变换、形态学梯度、Top-hat变换、颗粒分析、流域变换、灰值腐蚀和膨胀、灰值开闭运算、灰值形态学梯度等。简单来讲,原创 2020-11-22 22:22:32 · 549 阅读 · 0 评论 -
OpenCV学习07_图像线性与非线性滤波
图像滤波,指在尽量保留图像细节特征的条件下对目标图像的噪声进行抑制,是图像预处理中不可缺少的操作,其处理效果的好坏将直接影响到后续图像处理和分析的有效性和可靠性。消除图像中的噪声成分叫作图像的平滑化或滤波操作。信号或图像的能量大部分集中在幅度谱的低频和中频段,而在较高频段,有用的信息经常被噪声淹没。因此一个能降低高频成分幅度的滤波器就能够减弱噪声的影响。图像滤波的目的有两个:一个是抽出对象的特征作为图像识别的特征模式;另一个是为适应图像处理的要求,消除图像数字化时所混入的噪声。而对滤波处理的要求也有.原创 2020-11-21 23:05:59 · 626 阅读 · 0 评论 -
OpenCV学习06_离散傅里叶变换
一、时域和频域1.1 时域 时域(时间域)——自变量是时间,即横轴是时间,纵轴是信号的变化。其动态信号x(t) 是描述信号在不同时刻取值的函数。图1是正弦波的时域图,示出了振幅与时间的关系。在时域图中,横轴是时间,纵轴是振幅。时域图显示振幅随时间的变化,可以看出峰值振幅为5V,可以算出频率f=6 Hz。1.2 频域 频域(频率域)——自变量是频率,即横轴是频率,纵轴是该频率信号的幅度,也就是通常说的频谱图。下面是图文讲解:图2是图1中正弦波的频域图。在频域图中,横轴是频率,纵轴原创 2020-11-21 12:32:00 · 1300 阅读 · 0 评论 -
OpenCV学习05_图像混合与对比度、亮度调整
一、图像混合1.1 ROI线性混合1.1.1 ROI在图像处理领域,我们常常需要设置感兴趣区域(ROI, region of interest),来专注或者简化工作过程。也就是从图像中选择的一个图像区域,这个区域是图像分析所关注的重点。我们圈定这个区域,以便进行进一步处理。而且,使用ROI指定想读入的目标,可以减少处理时间,增加精度,给图像处理来带不小的便利。定义ROI区域有两种方法:第一种是使用表示矩形区域的Rect,它指定矩形的左上角坐标(构造函数的前两个参数)和矩形的长宽(构造函数的后两个参数原创 2020-11-19 23:52:50 · 460 阅读 · 0 评论 -
OpenCV学习04_core组件入门及颜色空间缩减与访问
一、core组件入门1.1 ellipse()函数//-------------------------------【DrawEllipse( )函数】--------------------------------// 描述:自定义的绘制函数,实现了绘制不同角度、相同尺寸的椭圆//-----------------------------------------------------------------------------------------void DrawEllipse(Ma原创 2020-11-17 23:32:39 · 267 阅读 · 1 评论 -
OpenCV学习03_HighGUI图形用户界面
一、图像的载入、显示和输出到文件1.1 Mat类简析Mat类是用于保存图像以及其他矩阵数据的数据结构,默认情况下其尺寸为0,我们也可以指定其初始尺寸,比如定义一个Mat类对象,就要写cv:Mat pic(320,640,cv:Scalar(100) );1.2 图像的载入与显示在OpenCV中,最简单的图像载入和显示只需要两句代码,非常便捷。这两句代码分别对应了两个函数,它们分别是imread()以及imshow()。1.2.1 imread()函数首先来看imread函数,其用于读取文件中的.原创 2020-11-15 19:10:04 · 496 阅读 · 0 评论 -
OpenCV学习02_图像与视频的基本处理
一、图像处理#include <opencv2/highgui/highgui.hpp> //highgui模块头文件#include <opencv2/imgproc/imgproc.hpp> //图像处理头文件1.1 腐蚀如何用OpenCV实现最基本的形态学运算之–腐蚀,即用图像中的暗色部分“腐蚀”掉图像中的高亮部分。int main(){ //载入原图 Mat srcImage = imread("F:\\CV\\LearnCV\\files\\mal原创 2020-11-15 11:17:44 · 358 阅读 · 0 评论 -
OpenCV学习01_VS17+Win10环境配置
今天开始,不间断学习下OpenCV对图形的处理。一、下载opencv安装包1.1 官网下载官网地址:https://opencv.org/releases/选择对应版本的cv文件,下载即可(注:外网下载很慢可镜像下载或到我的资源中下载我下载好的opencv-3.4.1-vc14_vc15.exe文件)。二、安装OpenCV双击下载好的或者拷好的安装包,选择解压路径后点Extract即可完成解压,解压后会自动生成一个opencv的文件夹,如下图:三、配置系统变量(WIN10)3.1 我的电原创 2020-11-14 23:35:12 · 217 阅读 · 0 评论