OpenCV
文章平均质量分 83
ccchenxi
努力过的时光才不会后悔
展开
-
《OpenCV3编程入门》学习笔记1 邂逅OpenCV
第1章 邂逅OpenCV1.1 OpenCV周边概念认知1.图像处理(Image Processing):计算机对图像进行分析,以达到所需结果的技术,又称影像处理。侧重处理。2.图像处理技术:图像压缩,增强和复原,匹配、描述和识别3个部分。3.数字图像:工业相机、摄像机、扫描仪等设备经过拍摄得到的一个大的二维数组。数组元素为像素,值为灰度值。4.数字图像处理(Digital Image ...原创 2018-10-18 23:29:37 · 524 阅读 · 1 评论 -
《OpenCV3编程入门》学习笔记6 图像处理(五)漫水填充
6.5 漫水填充(floodFill)6.5.1 漫水填充1.定义:一种用特定的颜色填充连通区域,通过设置可连通像素的上下限及连通方式达到不同填充效果2.基本思想:自动选中和种子点相连的区域(位于给定范围(从LowDiff到UpDiff)或在原始seedPoint像素值范围内),将该区域所有相似点填充指定的相同颜色3.作用:标记或分离图像一部分,从输入图像获取掩码区域4.封装函数:flo...原创 2018-12-10 18:52:51 · 424 阅读 · 0 评论 -
《OpenCV3编程入门》学习笔记8 图像轮廓与图像分割修复(一)查找并绘制轮廓
第8章 图像轮廓与图像分割修复8.1 查找并绘制轮廓8.1.1 寻找轮廓:findContours()函数1.作用:在二值图像中寻找轮廓2.函数原型:void findcontours(InputOutputArray image, OutputArrayOfArrays contours, OutputArray hierarchy, int mode, int method, Po...原创 2018-12-21 20:53:32 · 693 阅读 · 0 评论 -
《OpenCV3编程入门》学习笔记8 图像轮廓与图像分割修复(二)寻找物体的凸包
8.2 寻找物体的凸包8.2.1 概念1.给定二维平面上的点集,将最外层点连接起来构成的凸多边形。2.理解物体形状或轮廓的一种比较有用的方法是计算一个物体的凸包,然后计算其凸缺陷(convexity defects)例如,图中A-H区域是凸包的各个”缺陷”: 3.函数:convexHull()函数4.函数原型:void convexHull(Input...原创 2018-12-22 12:11:03 · 671 阅读 · 0 评论 -
《OpenCV3编程入门》学习笔记6 图像处理(六)图像金字塔与图片尺寸缩放
6.6 图像金字塔与图片尺寸缩放6.6.1 图像金字塔1.图像金字塔是图像中多尺度表达的一种,主要用于图像分割,是一种以多分辨率解释图像的结构,通过梯次向下采样获得分辨率逐步降低的图象集合2.分类:(1)高斯金字塔(Gaussianpyramid):向下采样(2)拉普拉斯金字塔(Laplacianpyramid):从金字塔底层图像重建上层未采样图像,在数字图像处理中即是预测残差,可以对图...原创 2018-12-11 21:51:03 · 312 阅读 · 0 评论 -
《OpenCV3编程入门》学习笔记6 图像处理(七)阈值化
6.7 阈值化· 最简单的图像切割方法,剔除图像中像素高于或低于一定值的像素,用图像中每一个像素点的灰度值与选取的与之进行比较,做出判断· 涉及函数:Threshold()函数(基本阈值操作)和adaptiveThreshold()函数· 基本思想:给定一个数组和一个阈值,根据数组中的每一个元素的值是高于还是低于阈值而进行一些处理6.7.1 固定阈值操作:Threshold()函数1.作...原创 2018-12-11 21:59:19 · 304 阅读 · 0 评论 -
《OpenCV3编程入门》学习笔记8 图像轮廓与图像分割修复(四)图像的矩
8.4 图像的矩从一幅数字图形中计算出来的矩集,通常描述了该图像形状的全局特征,并提供了大量关于该图像不同类型的几何特性信息,如大小、位置、方向、形状等(1)一阶矩与形状有关(2)二阶矩显示曲线围绕直线平均值的扩展程度(3)三阶矩关于平均值的对称性的测量(4)二阶矩和三阶矩可以导出一组共7个不变矩,不变矩是图像的统计特性,满足平移、伸缩、旋转均不变的特性。8.4.1 矩的相关函数1....原创 2019-01-03 19:42:50 · 374 阅读 · 0 评论 -
《OpenCV3编程入门》学习笔记8 图像轮廓与图像分割修复(五)分水岭算法(watershed algorithm)
8.5 分水岭算法(watershed algorithm)1.基于拓扑理论的数学形态学的分割方法。2.基本思想:把图像看作测地学上的拓扑地貌,图像中每一点像素的灰度值表示该点的海拔高度,每一个局部极小值及其影响区域称为集水盆,分水岭变换得到的是输入图像的集水盆图像,集水盆边界形成分水岭(输入图像的极大值点)。3.计算过程:一个迭代标注过程,包括排序过程和淹没过程,先对每个像素的灰度级进行从...原创 2019-01-04 15:07:51 · 497 阅读 · 1 评论 -
《OpenCV3编程入门》学习笔记8 图像轮廓与图像分割修复(六)图像修补
8.6 图像修补基本思想: 利用已经被破坏区域的边缘,即边缘的颜色和结构,繁殖和混合到损坏的图像中,达到图像修补的目的。8.6.1 实现图像修补:inpaint()函数1.作用: 用来从扫描的照片中清除灰尘和划痕,从静态图像或视频中去除不需要的物体2.函数原型:void inpaint(InputArray src, InputArray inpaintMask, Output...原创 2019-01-04 16:41:43 · 587 阅读 · 0 评论 -
《OpenCV3编程入门》学习笔记9 直方图与匹配(一&二) 图像直方图概述&直方图的计算与绘制
第9章 直方图与匹配9.1 图像直方图(Histogram)概述1.作用: 在每个兴趣点设置一个有相近特征的直方图所构成的标签,通过标记帧与帧之间显著的边缘、颜色、角度等特征的统计变化,来检测视频中场景的变化。2.概念: 图像直方图是图像中像素强度分布的图形表达方式,统计了每一个强度值所具有的像素个数,并将统计结果分布于一系列预定义的bins中。直方图中,横坐标的左侧为纯黑较暗区域,...原创 2019-01-05 20:32:17 · 657 阅读 · 0 评论 -
《OpenCV3编程入门》学习笔记10 角点检测(三)亚像素级角点检测
10.3 亚像素级角点检测10.3.1 亚像素级角点检测原理1.原理: 假设起始角点在实际亚像素角点附近,检测所有q-p向量,下面两种情况点p梯度与q-p向量的点积均为0:(1)点p附近图像均匀,即点p处梯度为0(2)边缘的梯度与沿边缘方向的q-p向量正交(向量与其正交向量点积为0),如下图: 则可以在p点周围找到很多组梯度以及相关向量q-p,令其点积为0,求解方...原创 2019-01-17 17:12:58 · 839 阅读 · 1 评论 -
《OpenCV3编程入门》学习笔记8 图像轮廓与图像分割修复(三)使用多边形将轮廓包围
8.3 使用多边形将轮廓包围8.3.1 将轮廓包围的多边形函数1.返回外部边界:boundingRect()函数(1)作用:返回指定点集最外面的边界矩形(四个顶点)(2)函数原型:Rect boundingRect(InputArray points)2.寻找最小包围矩形:minAreaRect()函数(1)作用:返回指定点集可旋转的最小面积的包围矩形(四个顶点)(2)函数原型:Ro...原创 2019-01-02 23:38:56 · 610 阅读 · 0 评论 -
《OpenCV3编程入门》学习笔记9 直方图与匹配(五)模板匹配
9.5 模板匹配基本思想: 在一幅图像中寻找与另一幅模板图像最匹配的部分,通过在输入图像上滑动图像块,对实际的图像块和输入图像进行匹配。9.5.1 模板匹配:matchTemplate()函数1.作用: 匹配出和模板重叠的图像区域2.函数原型:void matchTemplate(InputArray image, InputArray templ, OuputArray re...原创 2019-01-12 19:10:27 · 743 阅读 · 0 评论 -
《OpenCV3编程入门》学习笔记9 直方图与匹配(三)直方图对比
9.3 直方图对比9.3.1 对比直方图:compareHsit()函数1.作用: 比较两幅直方图2.函数原型:(1)double compareHist(InputArray H1,InputArray H2, int method)(2)double compareHist(const SpareMat& H1, const SpareMat& H2, int ...原创 2019-01-08 18:24:29 · 324 阅读 · 0 评论 -
《OpenCV3编程入门》学习笔记9 直方图与匹配(四)反向投影(back projection)
9.4 反向投影(back projection)9.4.1 反向投影原理1.基本思想: 反向投影中储存的数值代表了图像中该像素属于区域的概率,计算某一特征的直方图模型,使用模型寻找图像中存在的该特征2.基本原理:(1)对图像中每个像素(p(i,j)),获取色调数据并找到该色调/饱和度在直方图中的bin的位置(2)查询模型直方图中对应的bin的数值(3)将此数值存储在新的反射投影图...原创 2019-01-09 13:01:10 · 263 阅读 · 0 评论 -
《OpenCV3编程入门》学习笔记10 角点检测(一)Harris角点检测
第10章 角点检测10.1 Harris角点检测10.1.1 角点1.图像特征类型:(1)边缘(2)角点(感兴趣点)(3)斑点(感兴趣区域)2.角点定义:(1) 一阶导数(灰度的梯度)的局部最大所对应的像素点(2)两条及两条以上边缘的交点(3)图像中梯度值和梯度方向的变化速率都很高的点(4)角点处的一阶导数最大,二阶导数为0,指示了物体边缘变化不连续的方向3.角点检测算法:...原创 2019-01-15 16:32:55 · 845 阅读 · 0 评论 -
《OpenCV3编程入门》学习笔记10 角点检测(二)Shi-Tomasi角点检测
10.2 Shi-Tomasi角点检测10.2.1 Shi-Tomasi角点检测:goodFeaturesToTrack()函数1.定义: Harris算法改进,若矩阵M行列式的值与M的迹中较小的一个大于最小阈值,则会得到强角点2.作用: 确定图像的强角点,可用来初始化一个基于点的对象跟踪操作3.函数原型:void goodFeaturesToTrack(InputArray ...原创 2019-01-15 19:13:02 · 776 阅读 · 0 评论 -
《OpenCV3编程入门》学习笔记7 图像变换(一)基于OpenCV的边缘检测
第7章 图像变换7.1 基于OpenCV的边缘检测7.1.1 边缘检测的一般步骤1.滤波:边缘检测算法主要基于图像强度的一阶和二阶导数,导数对噪声敏感,所以要滤波2.增强:确定图像各点邻域强度的变化值,将有显著变化的点凸显,可通过计算梯度幅值确定3.检测:某些特定应用中梯度值较大点不为边缘点,通过阈值化方法检测进行取舍7.1.2 canny算子1.主要评价标准:(1)低错误率:减少...原创 2018-12-16 01:54:44 · 1118 阅读 · 0 评论 -
《OpenCV3编程入门》学习笔记7 图像变换(五 )直方图均衡化
7.5 直方图均衡化7.5.1 概念1.图像增强处理,图像的像素灰度变化是随机的,直方图图像高低不齐,用一定算法使直方图大致平和,通过拉伸像素强度分布范围来增强图像对比度2.均衡化处理后的图像只能是近似均匀分布,图像动态范围扩大了,本质是扩大了量化间隔,减小了量化级别,因此,原来灰度不同的像素处理后可能变得相同,形成一片相同灰度区域,各区域之间有明显的边界,从而出现了伪轮廓3.源图像对比度...原创 2018-12-20 20:53:43 · 378 阅读 · 0 评论 -
《OpenCV3编程入门》学习笔记2 启程前的认知准备
第2章 启程前的认知准备2.1 OpenCV 官方例程引导与赏析位置:…\opencv\sources\samples\cpp2.1.1彩色目标跟踪:Camshift(Continuously Adaptive Mean-SHIFT 连续自适应的MeanShift算法)程序用法:根据鼠标框选区域的色度光谱进行摄像头读入的视频目标跟踪官方例程:…\OpenCV3.4.1\opencv\s...原创 2018-10-29 22:32:10 · 222 阅读 · 0 评论 -
《OpenCV3编程入门》学习笔记4 OpenCV数据结构与基本绘图
第4章 OpenCV数据结构与基本绘图4.1 基础图像容器Mat4.1.1 数字图像存储概述1.图像在数码设备中的表现形式:像素点矩阵4.1.2 Mat结构的使用1.OpenCV1.x时代:基于C语言接口而建的图像存储格式IplImage*缺点:退出时忘记relese掉的话,会造成内存泄漏,手动释放内存耗费时间2.C++出现后:自动的内存管理不足:许多嵌入式开发系统只支持C语言3...原创 2018-11-01 03:15:44 · 454 阅读 · 1 评论 -
《OpenCV3编程入门》学习笔记3 HighGUI图形用户界面初步
第3章 HighGUI图形用户界面初步3.1 图像的载入、显示和输出到文件1.OpenCV命名空间2种访问方法(1)代码开头加:usingnamespace cv;(2)每个类或函数前加:cv::2.Mat类(1)Mat类用于保存图像及其他矩阵数据,默认尺寸0(2)定义Mat对象: cv::Mat pic(320,640,cv::Scalar(100));3.图像载入:imread...原创 2018-10-30 23:23:36 · 436 阅读 · 0 评论 -
《OpenCV3编程入门》学习笔记5 Core组件进阶(六)输入输出XML和YAML文件
第5章 Core组件进阶5.6 输入输出XML和YAML文件5.6.1 XML和YAML文件XML和YAML是使用非常广泛的文件格式,可以利用XML或者YAML式的文件存储和还原各种数据结构,还可以存储和载入任意复杂数据结构1.XML(Extensible Markup Language):可扩展标记语言,元标记语言,语义/结构化语言2.YAML(YAML Ain’t a Markuo ...原创 2018-11-15 19:03:00 · 370 阅读 · 0 评论 -
《OpenCV3编程入门》学习笔记5 Core组件进阶(一)访问图像中的像素
第5章 Core组件进阶5.1 访问图像中的像素5.1.1 图像在内存中的存储方式1.图像矩阵大小取决于通道数,矩阵中的子列个数与通道数相等。2.如果内存足够大,可以实现连续存储,有助于提升图像扫描速度,可以用isContinuous()判断矩阵是否连续存储。5.1.2 颜色空间缩减1.颜色空间缩减:将现有颜色空间值除以某个输入值,以获得较少的颜色数2.如,0~9范围的像素值为0,1...原创 2018-11-14 23:25:02 · 323 阅读 · 0 评论 -
《OpenCV3编程入门》学习笔记5 Core组件进阶(二) ROI区域图像叠加&图像混合
第5章 Core组件进阶5.2 ROI区域图像叠加&图像混合5.2.1 感兴趣区域ROI(region of interest)1.定义ROI区域两种方法:(1)定义矩形区域Rect:指定矩形左上角坐标和矩形的长和宽(2)指定感兴趣行或列的范围Range:Range是从起始索引到终止索引的一段连续序列2. 示例:利用ROI实现图像叠加#include<opencv2/...原创 2018-11-14 23:37:36 · 266 阅读 · 0 评论 -
《OpenCV3编程入门》学习笔记5 Core组件进阶(三)分离&合并颜色通道
第5章 Core组件进阶5.3 分离&合并颜色通道5.3.1 通道分离:split()函数1.作用:将一个多通道数组分离成几个单通道数组,公式:2.原型:(1)void split(const Mat& src,Mat* mvbegin); (2)void split(InputArray m,OutputArrayOfArrays mv);3.参数说明:(1)需要分离...原创 2018-11-15 00:20:01 · 398 阅读 · 0 评论 -
《OpenCV3编程入门》学习笔记5 Core组件进阶(四)图像对比度、亮度值调整
第5章 Core组件进阶5.4 图像对比度、亮度值调整5.4.1 理论依据1.算子:一般图像处理算子都是一个函数,接受一个或多个输入图像,并产生输出图像2.算子一般形式:3.点操作(point operators):仅根据输入像素值计算输出像素值,这类算子包括亮度(brightness)和对比度(contrast)调整、颜色矫正(color correction)、变换(transfor...原创 2018-11-15 00:27:32 · 341 阅读 · 0 评论 -
《OpenCV3编程入门》学习笔记5 Core组件进阶(五)离散傅里叶变换(DFT)
第5章 Core组件进阶5.5 离散傅里叶变换(Discrete Fourier Transform,DFT)5.5.1 离散傅里叶变换原理1.对一张图像使用傅里叶变换就是把它分解成正弦和余弦,将图像从空间域(spatial domain)转换到频域(frequency domain)2.理论基础:任一函数都可以表示成无数个正弦和余弦函数的和的形式3.二维图像的傅里叶变换数学公式表达:,...原创 2018-11-15 12:23:22 · 497 阅读 · 1 评论 -
《OpenCV3编程入门》学习笔记6 图像处理(一)线性滤波:方框滤波、均值滤波、高斯滤波
第6章 图像处理6.1 线性滤波:方框滤波、均值滤波、高斯滤波6.1.1 图像滤波与滤波器1.图像滤波:在尽量保留图像细节特征的条件下对目标图像的噪声进行抑制目的:(1)抽出对象的特征作为图像识别的特征模式(2)适应图像处理的要求,消除图像数字化时所混入的噪声要求:(1)不损坏图像的轮廓及边缘等重要信息(2)使图像清晰视觉效果好2.平滑滤波:消除图像中的噪声成分,低频增强的空间...原创 2018-11-30 17:23:56 · 566 阅读 · 0 评论 -
《OpenCV3编程入门》学习笔记6 图像处理(二)非线性滤波:中值滤波、双边滤波
第6章 图像处理6.2 非线性滤波:中值滤波、双边滤波6.2.1 非线性滤波很多情况下,使用领域像素的非线性滤波会得到更好的效果,如在噪声是散粒噪声而不是高斯噪声,即图像偶尔会出现很大值时,高斯滤波效果不如中值滤波6.2.2 中值滤波(Median filter)1.滤波原理:基于排序统计理论的一种能有效抑制噪声的非线性信号处理技术,用像素点邻域灰度值的中值替代像素点的灰度值,让周围的像...原创 2018-12-03 22:02:35 · 479 阅读 · 0 评论 -
《OpenCV3编程入门》学习笔记7 图像变换(二 )霍夫变换
7.2 霍夫变换7.2.1 概述1.特征提取技术,运用两个坐标空间之间的变换将在一个空间中具有相同形状的曲线或直线映射到另一个坐标空间的一个点上形成峰值,从而把检测任意形状的问题转化为统计峰值问题,用于检测直线、曲线、圆、椭圆等。2.分类:(1)霍夫线变换(2)霍夫圆变换7.2.2 霍夫线变换1.原理:(1)直线在坐标空间的表示: 1)笛卡尔坐标系:斜率和截距(m,b)表示 2...原创 2018-12-19 16:30:50 · 574 阅读 · 0 评论 -
《OpenCV3编程入门》学习笔记6 图像处理(三)形态学滤波(1):腐蚀与膨胀
第6章 图像处理6.3 形态学滤波(1):腐蚀与膨胀6.3.1 形态学概述1.数学形态学(Mathematical morphology):建立在格论和拓扑学基础上的图像分析学科,是数学形态学图像处理的基本理论。2.基本运算:二值腐蚀和膨胀、二值开闭运算、骨架抽取、极限腐蚀、击中击不中变换、形态学梯度、Top-hat变换、颗粒分析、流域变换、灰值腐蚀和膨胀、灰值开闭运算、灰值形态学梯度等...原创 2018-12-06 21:00:00 · 678 阅读 · 0 评论 -
《OpenCV3编程入门》学习笔记7 图像变换(三 )重映射
7.3 重映射7.3.1 概念1.重映射是把图像中某位置的像素放置到另一图片指定位置的过程,通过重映射表达像素位置: g(x,y)=f(h(x,y)) g()是目标图像,f()是原图像,h(x,y)是作用于(x,y)的映射方法函数2.函数:remap()函数,根据指定的映射形式,将源图像进行重映射几何变换,基于以下公式: ...原创 2018-12-19 22:35:42 · 286 阅读 · 0 评论 -
《OpenCV3编程入门》学习笔记6 图像处理(四)形态学滤波(2):开运算、闭运算、形态学梯度、顶帽、黑帽
6.4 形态学滤波(2):开运算、闭运算、形态学梯度、顶帽、黑帽高级形态学变换,基于腐蚀与膨胀,利用morphologyEx函数实现6.4.1 开运算1.腐蚀后膨胀的过程,数学表达式:dst=open(src,element)=dilate(erode(src,element))2.作用:消除小物体,在纤细点处分离物体,并且在平滑较大物体的边界的同时不明显改变其面积6.4.2 闭运算1...原创 2018-12-09 15:01:58 · 644 阅读 · 0 评论 -
《OpenCV3编程入门》学习笔记7 图像变换(四 )仿射变换
7.4 仿射变换(Affine Transformation)7.4.1 概念1.仿射变换,放射映射,在几何中,一个向量空间按进行一次线性变换(乘以一个矩阵)并接上一个平移(加上一个向量),变换为另一个向量空间的过程,保持了二维图形的平直性和平行性。2.变换形式:(1)旋转,rotation(2)平移,translation(3)缩放,scale3.矩阵表示: 使...原创 2018-12-20 20:45:40 · 308 阅读 · 0 评论 -
《OpenCV3编程入门》学习笔记11 特征检测与匹配(一) SURF特征点检测
第11章 特征检测与匹配11.1 SURF特征点检测11.1.1 SURF算法概览1.定义: SURF,SpeededUp Rebust Features,加速版的具有鲁棒性的特征算法,是尺度不变特征变换算法(SIFT)的加速版2.特征: 采用了harr特征以及积分图像的概念,加快了运行时间11.1.2 SURF算法原理1.构建Hessian矩阵构造高斯金字塔尺度空间(1)H...原创 2019-03-11 20:44:43 · 3527 阅读 · 0 评论