OpenCV图像处理
文章平均质量分 87
从零入门
WaitFoF
没有太晚的开始,不如就从今天行动。
总有一天,那个一点一点可见的未来,会在你心里,也在你的脚下慢慢清透。
生活,从不亏待每一个努力向上的人。
展开
-
OpenCV库成员——TermCriteria类
cv::TermCriteria类定义迭代算法终止条件的类。可以通过默认构造函数对其进行初始化,然后覆盖任何参数,或者可以使用带参数的构造函数对结构进行完全初始化。1. 公有类型enum Type { COUNT =1, MAX_ITER =COUNT, EPS =2}2. 公有成员函数1. 默认构造和有参构造cv::TermCriteria::TermCr...原创 2019-12-19 21:45:24 · 3085 阅读 · 0 评论 -
OpenCV库成员——VideoWriterProperties
VideoWriter通用属性标识符。c++python说明IDEOWRITER_PROP_QUALITYcv.VIDEOWRITER_PROP_QUALITY编码视频流的当前质量(0…100%)。可以在某些编解码器中动态调整。VIDEOWRITER_PROP_FRAMEBYTEScv.VIDEOWRITER_PROP_FRAMEBYTES(只读):刚编码的视...原创 2019-12-16 14:47:52 · 784 阅读 · 0 评论 -
OpenCV库成员——背景/前景分割类
文章目录一、backgroundSubtractor类1、backgroundSubtractor的继承图2、成员函数1. apply2. getBackgroundImage一、backgroundSubtractor类该类仅用于为整个背景/前景分割算法系列定义通用接口。1、backgroundSubtractor的继承图2、成员函数1. apply说明计算前景蒙版。...原创 2019-12-22 21:23:49 · 2020 阅读 · 0 评论 -
OpenCV库成员——BorderTypes
文章目录BorderTypes 枚举1. 头文件2. 说明3. 枚举器4. 使用原理???? 问题:???? OpenCV解决方案:???? opencv中默认的处理方法是:`BORDER_DEFAULT`BorderTypes 枚举1. 头文件#include <opencv2/core/base.hpp>2. 说明各种边界类型,图像边界用 |表示3. 枚举器enum cv::Bo...原创 2019-12-25 20:19:34 · 4623 阅读 · 0 评论 -
OpenCV库成员——VideoCapture类和VideoWriter类
前面已经提到过一部分的视频读写:OpenCV–012:视频读写OpenCV视频I/O概述OpenCV视频I/O模块是一组用于读取和写入视频或图像序列的类和功能。基本上,该模块将cv :: VideoCapture和cv :: VideoWriter类作为2层接口提供给许多用作后端的视频I / O API。某些后端,例如(DSHOW)Direct Show,Windows视频(VFW)...原创 2019-12-16 15:49:55 · 3556 阅读 · 0 评论 -
COLORMAP_JET的颜色规律
文章目录1. COLORMAP_JET简介2. 灰度到JET的映射2.1 灰度值映射成JET2.2 JET映射规律2.3 c++实现Jet映射关于applyColorMap函数的使用参考:伪彩色:LUT作用与用法1. COLORMAP_JET简介计算机视觉中最常用的颜色映射算法是Jet,它具有高的对比度可以有效突出图像中的细节。但如果仔细观察图像的梯度图会发现一系列的颜色带,在青色和黄色区域最为明显。缺点:这对于伪彩图最大的影响在于颜色变化过于剧烈,将导致人眼对于实际数据的误解。很多平滑过渡原创 2020-11-10 18:35:46 · 26542 阅读 · 4 评论 -
OpenCV——探究Mat何时为空&&初始化Mat
文章目录探究Mat何时为空初始化Mat探究Mat何时为空int main() { Mat a; cout << "Mat a: " << endl; if (a.empty()) { cout << " a is null" << endl; } else { cout << " a is not null" << endl; for (size_t i = 0; i < 10; i++)原创 2020-10-21 21:22:19 · 5358 阅读 · 0 评论 -
二值图像分析—轮廓发现
轮廓轮廓即是以某种方式表示图像中的曲线的点的列表。这种表示可以根据实际的情形不同而不同。表示一条曲线的方式有很多种。OpenCV中,轮廓是由STL风格的vector<>模板对象表示的,其中vector中的每个元素都编码了曲线上的下一点的位置信息。轮廓发现是基于图像边缘提取的基础寻找对象轮廓的方法。所以边缘提取的阈值选定会影响最终轮廓发现结果。API介绍findContours...原创 2019-10-29 20:42:31 · 1685 阅读 · 0 评论 -
16位或8位单通道图像直方图均衡化算法原理与实现
文章目录直方图均衡化的介绍直方图均衡化原理手工实现直方图均衡化理论知识来源:直方图均衡化算法原理与实现直方图均衡化16位或者8位直方图实现代码:直方图均衡(支持单通道16位和8位图像).rar直方图均衡化的介绍直方图均衡化是一种简单有效的图像增强技术,通过改变图像的直方图来改变图像中各像素的灰度,主要用于增强动态范围偏小的图像的对比度。原始图像由于其灰度分布可能集中在较窄的区间,造成图像不够清晰。例如,过曝光图像的灰度级集中在高亮度范围内,而曝光不足将使图像灰度级集中在低亮度范围内。原创 2020-09-10 17:46:12 · 2391 阅读 · 0 评论 -
图像透视变换应用
简介透视变换是将成像投影到一个新的视平面,也称作投影映射。投影变换是三维空间上的非线性变换,可看做是仿射变换的更一般形式,简单讲即通过一个3x3的变换矩阵将原图投影到一个新的视平面(Viewing Plane),在视觉上的直观表现就是产生或消除了远近感。OpenCV透视变换的透视变换 1、warpPerspective利用透视矩阵对图像进行透视变换。说明OpenCV提供了warp...原创 2019-11-26 23:27:21 · 2948 阅读 · 0 评论 -
图像去水印/修复
实际应用中,我们的图像常常会被噪声腐蚀,这些噪声可能是划痕,涂鸦等。或者图像的部分本身已经损毁。这就需要对图片进行还原。 图像的修复原理:利用那些已经被破坏的区域的边缘,即边缘的颜色和结构,根据这些图像留下的信息去推断被破坏的信息区域的信息内容,然后对破坏区进行填补,以达到图像修补的目的。 OpenCV中的两种修复算法1、inpaint函数说明使用区域邻域恢复图像中的选定区域。...原创 2019-11-24 18:06:31 · 3117 阅读 · 5 评论 -
二值图像分析—提取最大轮廓与编码关键点
基本操作:读取图片图片灰度化图片二值化图片形态学——闭操作提取轮廓筛选最大的轮廓——根据轮廓面积绘制轮廓关键点与轮廓void getMaxContourAndContourPoint(Mat &src) { //2. 图片灰度化 Mat gray; cvtColor(src, gray, COLOR_BGR2GRAY); //3. 图片二值化 Mat bin...原创 2019-11-22 22:52:51 · 1254 阅读 · 0 评论 -
图像形态学——击中击不中
击中击不中变换击中击不中变换是形状检测的一个基本工具。设X为目标图像,B为结构元素,且B由两个不相交的部分B1B_1B1和B2B_2B2组成,即B=B1∪B2B=B_1∪B_2B=B1∪B2,且B1∩B2=ϕB_1∩B_2=\phiB1∩B2=ϕ。则目标图像X被结构元素B击中的数学表达式:X⊗B={x∣(B1)x⊆X,(B2)x⊆Xc}X \otimes B= \{x|(B_1)...原创 2019-11-22 20:26:40 · 3521 阅读 · 0 评论 -
图像形态学—用基本梯度实现轮廓分析
基本的步骤:图像形态学梯度灰度转化全局阈值二值化轮廓分析void morphologyEx_gradient(Mat& src) { //1. 图像形态学梯度 Mat kernel, gradient_Img; kernel=getStructuringElement(MORPH_RECT, Size(3, 3)); morphologyEx(src, gradie...原创 2019-11-17 20:32:12 · 1186 阅读 · 0 评论 -
图像形态学2——膨胀、腐蚀、开、闭、顶帽、黑帽、梯度运算
形态学形态学(morphology)常应用在生物学中,研究动植物的形态和结构;图像形态学即数学形态学(Mathematical morphology)是一门建立在格伦和拓扑学基础上的图像分析学科,是数学形态学图像处理的基本理论;常见图像形态学运算:腐蚀、膨胀、开运算、闭运算、骨架抽取、极线腐蚀、击中击不中变换、Top-hat变换、颗粒分析、流域变换、形态学梯度等;膨胀、腐蚀、开、闭运算是数...原创 2019-11-17 14:11:18 · 1632 阅读 · 0 评论 -
图像形态学1——前导知识
前导知识1、getStructuringElement函数——获取结构化元素这些形态学操作都涉及到一个关键的因子——结构元。结构元基本的形态是矩形、十字形或椭圆形(圆形)。结构元素就相当于我们在滤波中所涉及到的模板,也就是说它是一个给定像素的矩阵,这个矩阵可以是任意形状的,但是一般情况下都是正方形,圆形或者菱形的。但是在结构元素中有一个中心点(也叫做anchor point)。和模板中心一样...原创 2019-11-17 14:06:13 · 438 阅读 · 0 评论 -
二值图像分析—霍夫圆检测
经典霍夫圆变换的原理霍夫圆变换和霍夫线变换的原理类似。霍夫线变换是两个参数(r,θ),霍夫圆需要三个参数,圆心的x,y坐标和圆的半径。如下对应的三个参数c1,c2,c3。例如:其形状和类似,该函数是由z=x沿z轴旋转而成的圆锥曲面。对于xy平面的一个点x0,y0(上述对应的点为(1,1)),则对应的由c1,c2,c3组成三维空间的空间曲面。对于c1,c2,c3平面的一个点,则对应的...原创 2019-11-17 13:58:04 · 4995 阅读 · 2 评论 -
二值图像分析—霍夫直线检测
霍夫变换霍夫变换是图像处理中的一种特征提取技术,可以识别图像中的几何形状。它将图像空间中的特征点映射到参数空间进行投影,通过检测累计结果的局部极值点得到一个符号某特定形状的点的集合。经典霍夫变换用来检测图像中的直线,后来霍夫变换扩展到任意形状物体的识别,多为圆和椭圆。它的抗噪声、抗形变能力较强。另一种直线提取的方法是对图像边缘点进行链码追踪,在得到的链码串中提取直线。霍夫变换将在一个空间中具有...原创 2019-11-16 22:36:04 · 2726 阅读 · 0 评论 -
二值图像分析—点多边形测试、寻找最大内接圆
测试一个点是否在给定的多边形内部,边缘或者外部。OpenCV提供的API说明函数确定是否给定的点在轮廓的外部或者内部或者在边缘线上。函数返回正数(点在轮廓内部)、负数(点在轮廓外部)、零(点在边缘上)。当measureDist参数设定为false,返回值为+1、-1、0。否则,返回值为点与最邻近轮廓点的距离。声明double pointPolygonTest( InputArr...原创 2019-11-10 22:34:47 · 897 阅读 · 1 评论 -
二值图像分析–直线拟合与极值点寻找
在图像的处理中,会遇到一种情况,根据给定的点集(比如轮廓)拟合出一条直线的情景。1.最小二乘法拟合直线最小二乘法多项式直线拟合,根据给定的点,求出它的函数 y=f(x)y=f(x)y=f(x),当然求得准确的函数是不太可能的,但是我们能够求出它的近似曲线 y=φ(x)y=φ(x)y=φ(x)。原理:假如有点I = 1,2,3,……n,求近似曲线 y=φ(x)y=φ(x)y=φ(x),并且使...原创 2019-11-10 21:37:50 · 2304 阅读 · 0 评论 -
二值图像分析—凸包检测
凸包概念在一个多变形边缘或者内部任意两个点的连线都包含在多边形边界或者内部。 包含点集合S中所有点的最小凸多边形称为凸包(Convex Hull)。凸包(Convex Hull)是一个计算几何(图形学)中常见的概念。数学定义:在一个向量空间V中,对于给定集合X,所有包含X的凸集的交集S被称为X的凸包。给定二维平面上的点集,凸包就是将最外层的点连接起来构成的凸多边形。在图像处理过程中,我们常常...原创 2019-11-09 16:35:30 · 4410 阅读 · 6 评论 -
二值图像分析—Hu矩实现轮廓匹配
在OpenCV中,可以很方便的得到Hu不变距,Hu矩在图像旋转、缩放、平移等操作后,仍能保持矩的不变性,所以有时候用Hu不变距更能识别图像的特征。Hu矩由于具有尺度、旋转、平移不变性,可以用来做匹配。Hu不变矩主要是利用归一化中心矩构造了7个不变特征矩,由二阶矩和三阶矩可以导出7个不变矩:opencv中计算Hu矩函数说明该函数计算7个Hu不变量。这些值被证明对图像比例,旋转和反射...原创 2019-11-08 20:27:48 · 3683 阅读 · 3 评论 -
二值图像分析—用几何矩计算轮廓中心与横纵比过滤
矩是描述图像特征的算子,如今矩技术已广泛应用于图像检索和识别 、图像匹配 、图像重建 、数字压缩 、数字水印及运动图像序列分析等领域。常见的矩描述子可以分为以下几种:几何矩、正交矩、复数矩和旋转矩。其中几何矩提出的时间最早且形式简单,对它的研究最为充分。几何矩对简单图像有一定的描述能力,他虽然在区分度上不如其他三种矩,但与其他几种算子比较起来,他极其的简单,一般只需用一个数字就可表达。所以,一般...原创 2019-11-06 21:31:43 · 1511 阅读 · 0 评论 -
二值图像分析 –使用轮廓逼近-圆、椭圆、矩形
说明以指定的精度逼近多边形曲线。函数cv :: approxPolyDP用一条具有较少顶点的曲线或多边形逼近一条曲线或多边形,以使它们之间的距离小于或等于指定的精度。它使用Douglas-Peucker算法声明void approxPolyDP( InputArray curve, OutputArray approxCurve, double epsilon,...原创 2019-11-01 21:08:16 · 1587 阅读 · 0 评论 -
二值图像分析—轮廓最小外接矩形
OpenCV中最小外接矩形说明brief Finds a rotated rectangle of the minimum area enclosing the input 2D point set.查找包含输入二维点集的最小区域的旋转矩形。该函数计算并返回指定点集的最小区域边界矩形(可能已旋转)。开发人员应记住,当数据接近包含Mat元素的边界时,返回的RotatedRect可以包含负...原创 2019-10-30 17:11:27 · 5865 阅读 · 6 评论 -
二值图像分析—轮廓正外接矩形
OpenCV中轮廓外接矩形1. 轮廓正外接矩形——boundingRect()说明计算点集或灰度图像的非零像素的右边界矩形。该函数为指定的点集或灰度图像的非零像素计算并返回最小的垂直边界矩形。声明Rect boundingRect( InputArray array );参数array:输入2维点集,可以是std :: vector或Mat类型。返回:Rect类矩...原创 2019-10-29 23:08:49 · 2144 阅读 · 0 评论 -
二值图像--二值图像联通组件寻找
联通组件标记算法介绍联通组件标记算法是图像分析中最常见的算法之一,算法的实质是扫描一幅图像的每一个像素,对于像素值相同的分为相同的组(group),最终得到图像中所有的像素联通组件。扫描的方式可以是从上到下,从左到右,对于一幅有N个像素的图像来说,最大连通组件个数为N/2。扫描是基于每个像素单位,对于二值图像而言,联通组件集合可以是V{1|白色}或者V={0|黑色},取决于前景色与背景色的不同。...原创 2019-10-28 23:10:23 · 1142 阅读 · 0 评论 -
OpenCV--042:自适应阈值算法
自适应阈值算法利用图像局部阈值替换全局阈值进行图像计算的一种方法,具体针对光影变化过大的图片,或者范围内颜色差异不太明显的图片。自适应是指保证计算机能够通过判断和计算取得该图像区域的平均阈值进行迭代。在图像阈值化操作中,更关注的是从二值化图像中,分离目标区域和背景区域,但是仅仅通过设定固定阈值很难达到理想的分割效果。而自适应阈值,则是根据像素的邻域块的像素值分布来确定该像素位置上的二值化阈值。...原创 2019-10-27 21:14:19 · 2880 阅读 · 0 评论 -
OpenCV--041:Triangle二值寻找算法
三角形的二值化法:不用自己指定thresh值,系统会进行计算并且作为返回值返回。THRESH_OTSU最适用于双波峰。THRESH_TRIANGLE最适用于单个波峰,最开始用于医学分割细胞等。原理:1.图像转灰度2.计算图像灰度直方图3.寻找直方图中两侧边界4.寻找直方图最大值5.检测是否最大波峰在亮的一侧,否则翻转6.计算阈值得到阈值T,如果翻转则255-Tvoid ...原创 2019-10-27 19:50:34 · 2425 阅读 · 0 评论 -
OpenCV--040: OTSU二值寻找算法
Otsu最大类间方差法原则利用阈值将原图像分成前景,背景两个图像。该算法在灰度直方图的基础上采用最小二乘法原理推导出来的,具有统计意义上的最佳分割。基本原理:利用最佳阈值将图像的灰度值分割成两个部分,即背景与目标,使背景和目标之间的方差最大,具有最大的分离性。背景与目标之间的方差越大,说明构成图像的两个部分之间的差别越大,当部分目标被错分为背景或者部分背景被错分成目标,都会导致两部分之间的...原创 2019-10-27 14:47:18 · 434 阅读 · 0 评论 -
OpenCV--039:基本阈值操作
图像阈值threshold最简单的分割方法应用举例:分离对应于我们想要分析的对象的图像的区域。该分离基于对象像素和背景像素之间的强度变化。为了区分我们感兴趣的像素,我们可以用一个确定的值来设置它们来识别它们。在图像处理中它的意思是颜色转换的临界点,该方法只用于二值化的图像中。 阈值类型为了说明阈值过程的工作原理,我们假设我们有一个具有强度值为src(x,y)像素的源图像。蓝色水...原创 2019-10-26 20:01:41 · 216 阅读 · 0 评论 -
二值图像--基础概念
一、 二值图像概念1. 二值图像含义二值图像(Binary Image)是指将图像上的每一个像素只有两种可能的取值或灰度等级状态,人们经常用黑白、B&W、单色图像表示二值图像。二值图像是指在图像中,灰度等级只有两种,也就是说,图像中的任何像素点的灰度值均为0或者255,分别代表黑色和白色。2. 二值图像特点1)数据量小;2)处理速度快,成本低,实用性强;3)能定义几何学的各种...原创 2019-10-12 19:27:42 · 15803 阅读 · 0 评论 -
OpenCV--037:模板匹配
模板匹配是一种最原始、最基本的模式识别方法,研究某一特定对象物的图案位于图像的什么地方,进而识别对象物,这就是一个匹配问题。它是图像处理中最基本,最常见的匹配方法。模板匹配具有自身的局限性,主要表现在它只能进行平行移动,若原图像中的匹配目标发生旋转或大小变化,该算法无效。定义模板就是一副已知的小图像,而模板匹配就是在一副大图像中搜寻目标,已知该图中有要找的目标,且该目标同模板有相同的尺寸、...原创 2019-10-11 19:52:15 · 325 阅读 · 0 评论 -
OpenCV--036: 图像等比例缩放、图像金字塔(上下采样)
图像金字塔图像金字塔是图像多尺度表达的一种,是一种以多分辨率来解释图像的有效但概念简单的结构。一幅图像的金字塔是一系列以金字塔形状排列的分辨率逐步降低,且来源于同一张原始图的图像集合。其通过梯次向下采样获得,直到达到某个终止条件才停止采样。我们将一层一层的图像比喻成金字塔,层级越高,则图像越小,分辨率越低。说白了就是图像的缩放。一张图像不断的缩小,大图在下,小图在上,看起来就是一个...原创 2019-10-09 21:14:21 · 1050 阅读 · 0 评论 -
OpenCV--035: Canny边缘检测器
Canny目标是找到一个最优的边缘检测算法,最优边缘检测含义:最优检测算法能够尽可能多地标识出图像中的实际边缘,漏检真实边缘的概率和误检非边缘的概率都尽可能小;最优定位准则检测到的边缘点的位置距离实际边缘点的位置最近,或者是由于噪声影响引起检测出的边缘偏离物体的真实边缘的程度最小;检测点与边缘点一一对应算子检测的边缘点与实际边缘点应该是一一对应。算法实现步骤应用高...原创 2019-10-06 15:57:51 · 629 阅读 · 0 评论 -
OpenCV--034: 图像锐化-USM
图像锐化图像锐化(image sharpening)是补偿图像的轮廓,增强图像的边缘及灰度跳变的部分,使图像变得清晰,分为空间域处理和频域处理两类。图像锐化是为了突出图像上地物的边缘、轮廓,或某些线性目标要素的特征。这种滤波方法提高了地物边缘与周围像元之间的反差,因此也被称为边缘增强。图像锐化处理的目的是为了使图像的边缘、轮廓线以及图像的细节变得清晰,经过平滑的图像变得模糊的根本原因是因为图...原创 2019-10-06 14:14:08 · 1546 阅读 · 0 评论 -
OpenCV--033_2: 图像梯度
前面我们介绍过图像的梯度,其定义是根据微积分的定义在二维离散函数中推导出来的。梯度只是一个工具,方法,核心目的是得到像素点与其相邻像素的灰度值变化情况,并通过这种变化来增强图像。这种原始定义的梯度只是这种灰度值变化情况的度量工具。假设某像素与其8领域用如下矩阵表示:那么,根据图像梯度的定义:gx = z8 - z5gy = z6 - z5上面提到,这种原始定义的梯度只是这种灰度值变化情...原创 2019-10-05 23:33:32 · 439 阅读 · 0 评论 -
OpenCV--033_2: 图像梯度--Sobel算子
索贝尔算子(Sobel operator)主要用作边缘检测,在技术上,它是一离散性差分算子,用来运算图像亮度函数的灰度之近似值。在图像的任何一点使用此算子,将会产生对应的灰度矢量或是其法矢量。Sobel算子是一种常用的边缘检测算子,是一阶的梯度算法;Sobel算子是结合了高斯平滑与微分运算的结合方法,所以它的抗噪声能力很强。用户可以设定求导方向,水平或者垂直(通过参数yorder和xord...原创 2019-10-05 21:43:38 · 1683 阅读 · 1 评论 -
OpenCV--033_1: 图像梯度
索贝尔算子(Sobel operator)主要用作边缘检测,在技术上,它是一离散性差分算子,用来运算图像亮度函数的灰度之近似值。在图像的任何一点使用此算子,将会产生对应的灰度矢量或是其法矢量。Sobel算子是一种常用的边缘检测算子,是一阶的梯度算法;对噪声具有倾斜作用,提供精确的边缘信息,边缘定位精度不够高;当对精度要求不是很高时,是一种多种常用的边缘检测方法。常见的应用和物理意义是边缘检测...转载 2019-10-05 13:25:10 · 390 阅读 · 0 评论 -
OpenCV--032:自定义的滤波器
前面已经对图像进行了模糊处理,介绍了几种滤波算法。OpenCV中还可以通过相应API来定义卷积操作,也就是设定自定义的卷积算子。下面三个自定义的卷积核就分别可以实现均值模糊、图像锐化和图像梯度的功能:OpenCV中API函数说明将图像与内核卷积。该函数将任意线性滤波器应用于图像。支持就地操作。当光圈部分位于图像外部时,该函数会根据指定的边框模式对异常像素值进行插值。该函数实际上会...原创 2019-10-04 21:25:14 · 338 阅读 · 0 评论