opencv3.1.0笔记
文章平均质量分 86
opencv学习笔记
我想养只汤姆猫
永远谦虚的做一个俗人
展开
-
30.凸包(Convex Hull)
1.主要内容概念介绍API说明代码演示2.概念介绍什么是凸包(Convex Hull),在一个多变形边缘或者内部任意两个点的连线都包含在多边形边界或者内部。正式定义:包含点集合S中所有点的最小凸多边形称为凸包检测算法- Graham扫描法(较常用的一个算法)3.Graham扫描法介绍首先选择Y方向最低的点作为起始点p0从p0开始极坐标扫描,依次添加p1….pn(排...原创 2020-04-10 01:24:32 · 864 阅读 · 2 评论 -
29.轮廓发现
1.轮廓发现(find contour in your image)轮廓发现(find contour)代码演示2.介绍轮廓发现是基于图像边缘提取的基础寻找对象轮廓的方法,所以边缘提取的阈值选定会影响最终轮廓发现结果3.API介绍在二值图像上发现轮廓使用APIcv::findContours(InputOutputArray binImg, // 输入图像,非0的像素被...原创 2020-04-10 01:20:25 · 219 阅读 · 1 评论 -
28.模板匹配
1.模板匹配(Template Match)模板匹配介绍相关API演示代码演示2.模板匹配介绍模板匹配就是在整个图像区域发现与给定子图像匹配的小块区域。所以模板匹配首先需要一个模板图像T(给定的子 图像)另外需要一个待检测的图像-源图像S工作方法,在带检测图像上,从左到右,从上向下计算模板图像与重叠子图像的匹配度,匹配程度越大,两者相同的可能性越大。3.模板匹配介绍——...原创 2020-04-10 01:16:59 · 333 阅读 · 1 评论 -
27.直方图反向投影(Back Projection)
1.主要内容反向投影相关步骤和相关API代码演示2.什么叫反向投影(此处注意理解图像的数据特征)反向投影是反映直方图模型在目标图像中的分布情况简单的讲,就是用直方图模型去目标图像中寻找是否有相似的对象。通常用HSV色彩空间的HS两个通道直方图模型。3.反向投影的举例以及步骤(1)直方图模型建立(2)待检测对象(3)反向投影对象反向投影步骤:1.建立直方图模型...原创 2020-04-10 01:08:45 · 482 阅读 · 0 评论 -
26.直方图比较
1.主要内容直方图比较方法相关API代码演示2.直方图比较方法——概述对输入的两张图像计算得到直方图H1与H2,归一化到相同的尺度空间,然后可以通过计算H1与H2的之间的距离得到两个直方图的相似程度进而比较图像本身的相似程度。Opencv提供的比较方法有四种:Correlation 相关性比较Chi-Square 卡方比较Intersection 十字交叉性Bhattach...原创 2020-04-10 01:03:00 · 696 阅读 · 0 评论 -
25.直方图计算
1.主要内容直方图概念API学习代码演示2.直方图概念基本介绍假设有图像数据8x8,像素值范围0~14共15个灰度等级,统计得到各个等级出现次数及直方图如下图所示,每个紫色的长条叫BIN(值的范围大小)。将bins划分为16个等级,每个等级有16位上述直方图概念是基于图像像素值,其实对图像梯度、每个像素的角度、等一切图像的属性值,我们都可以建立直方图。这个才是直...原创 2020-04-10 00:55:04 · 3329 阅读 · 0 评论 -
24.直方图均衡化
1.主要内容什么是直方图(Historgram)直方图均衡化API说明2.什么是直方图举例假设有图像数据8x8,像素值范围0~14共15个灰度等级,统计得到各个等级出现次数及直方图如下图所示由个像素值出现的数字得出下列的直方图图像直方图,是指对整个图像在灰度范围内的像素值(0-255)统计频率次数,据此生成的直方图,称为图像直方图-直方图。直方图反映了图像灰度的分布情况。...原创 2020-04-10 00:50:21 · 407 阅读 · 0 评论 -
23.像素重映射
1.主要内容像素重映射的介绍API介绍代码演示2.像素重映射的介绍简单点说就是把输入图像中各个像素按照一定的规则映射到另外一张图像的对应位置上去,形成一张新的图像。g(x,y)是重映射之后的图像,h(x,y)是功能函数,f是源图像假设有映射函数3.API介绍cv::remapRemap(InputArray src,// 输入图像,需要单通道8位或者浮点类型的图...原创 2020-04-10 00:45:55 · 273 阅读 · 0 评论 -
22.霍夫圆变换
1.主要内容霍夫圆检测原理相关API代码演示2.霍夫圆检测原理从平面坐标到极坐标转换三个参数C(x0,y0,r),其中x0.y0是圆心。假设平面坐标的任意一个圆上的点,转换到极坐标中,C(x0,y0,r)处有最大值,霍夫变换正是利用这个原理实现圆的检测因为霍夫圆检测对噪声比较敏感,所以首先要对图像做中值滤波(去椒盐噪声)基于效率考虑,opencv中实现的霍夫变换圆检测是基于图...原创 2020-04-10 00:40:11 · 510 阅读 · 0 评论 -
21.霍夫变换——直线检测
1.主要内容霍夫直线变换介绍相关API学习2.霍夫直线变换介绍Hough Line Transform用来做直线变换前提条件——边缘检测以及完成平面空间到极坐标空间转换通过霍夫变换我们可以进行一个规则的几何形状的检测,其原理是通过极坐标变化将直角坐标各个点转换到极坐标空间中,形成一条一条的曲线,图像中曲线交点所在的位置,我们认为是同一个直线上的点,然后我们在通...原创 2020-04-10 00:08:41 · 655 阅读 · 0 评论 -
20.Canny边缘检测
1.主要内容Canny算法介绍API cv::Canny()clone和copyto的区别,详见链接,注意copyto的掩码图图像的取反2.Canny算法介绍Canny是边缘检测算法,于1986年提出是一个很好的边缘检测器是常用也很实用的图像处理方法其算法步骤如下:高斯模糊——GaussianBlur() //降噪声灰度转换——cvtCol...原创 2020-04-09 23:59:17 · 452 阅读 · 0 评论 -
19.Laplance算子
1. 主要内容laplance算子理论——二阶导数获得图像边缘API讲解2. laplance算子理论(1) 基本理论解释:在二阶导数的时候,最大变化处的值为0即边缘值是0,通过二阶导数计算,依据理论我们可以计算图像的二阶导数来提取边缘。(2) laplance算子不会计算二阶导数?使用拉普拉斯算子(Laplance operator)opencv提供了相应的API—...原创 2020-04-09 23:45:16 · 411 阅读 · 0 评论 -
18.Sobel算子
1.主要内容(1)卷积应用-图像边缘提取(2)sobel经典算法与opencv提供的sobel算法(3)当一些API不能满足自己的需求时,如何去自己完成一些计算2.卷积应用——图像边缘提取(1) 边缘是什么-是像素值发生跃迁的地方,是图像的显著特征之一,在图像特征提取、对象检测、模式识别等方面都有重要的作用(2)如何捕捉/提取边缘-对图像求它的一阶导数delta = f(x)- f(...原创 2020-02-15 10:26:31 · 1288 阅读 · 0 评论 -
17.处理边缘
1.主要内容卷积边缘问题处理边缘代码演示2.卷积边缘问题图像卷积的时候边界像素、不能被卷积操作,原因在于边界像素没有完全跟kernel重叠,所以当 3x3滤波时候有1个像素的边缘没有被处理,5x5滤波的时候有2个像素的边缘没有被处理。3.处理边缘在卷积开始之前增加边缘像素,填充的像素值为0或者RGB黑色,比如3x3在四周各填充一个像素的边缘,这样就确保图像的边缘被处理,...原创 2020-02-11 17:26:56 · 290 阅读 · 0 评论 -
16.自定义线性滤波
主要内容卷积概念常见算子自定义卷积模糊卷积概念卷积是图像处理中的一个操作,是kernel在图像的每个像素上的操作kernel本质上是一个固定大小的矩阵数组,其中心被称为锚点(anchor point)卷积如何工作把kernel放到像素数组上,求锚点周围覆盖的像素乘积之和(包括锚点),用来替换锚点覆盖下像素点值的操作称为卷积处理。数学表达公式如下Sum = 8x1+...原创 2020-02-03 16:28:30 · 263 阅读 · 0 评论 -
15.基本阈值操作
主要内容图像阈值阈值类型二值化分割——五种方式的算法了解寻找阈值 ——两种方式的算法了解阈值(threshold)简单点说是把图像分割的标尺,我们也可以自己设定阈值的大小。OpenCV提供两种阈值产生算法阈值的类型(1)类型一——阈值二值化(threshold binarg)左下方的图表示图像像素点Src(x,y)值的分布情况,蓝色水平线表示阈值(2)类型二...原创 2020-01-14 16:18:23 · 855 阅读 · 0 评论 -
14.图像金字塔——上采样与降采样
主要内容图像金字塔的概念采样API高斯不同(DOG)图像金字塔的概念(1)我们在图像处理中常常会调整图像大小,最常见的就是放大(zoom in)和缩小(zoom out),尽管几何变换也可以实现图像的放大和缩小,但是这里我们介绍图像金字塔。一个图像金字塔是一系列的图像组成,最底下一张是图像尺寸最大,最上方的图像尺寸最小,从空间上从上向下看就像是一个古代金字塔。(2) 本...原创 2020-01-14 15:53:19 · 1541 阅读 · 0 评论 -
13.形态学操作应用——提取水平和垂直线
主要内容:形态学操作的应用——提取水平与垂直线原理方法实现步骤原理方法图像形态学操作的时候,可以通过自定义的结构元素实现结构元素对输入图像一些对象敏感、另一些对象不敏感,这样就会让敏感的对象改变而不敏感的对象保留输出,通过使用两个基本的形态学操作——膨胀(dilate)和腐蚀(erode),使用不同的结构元素实现对输入图像的操作,得到想要的结果。(理解对比开操作和闭操作)膨胀——...原创 2020-01-13 14:39:59 · 455 阅读 · 0 评论 -
12.形态学操作
主要内容(形态学的操作主要在二值图像的分析上使用,具有很重要的意义)开操作 open闭操作 close形态学梯度 Morphologica l Gradient顶帽 top hat黑帽 black hat(1)相关APImorphologyEx(src,dest,CV_MOP_BLACKHAT,kernel);//Mat src 输入图像//Mat des...原创 2020-01-13 14:36:08 · 442 阅读 · 0 评论 -
11.膨胀与腐蚀
图像形态学操作——基于形状的一系列图像处理操作的合集,主要是集合论基础上的形态学操作形态学有四个基本操作:腐蚀、膨胀、开、闭膨胀和腐蚀是图像处理中最常用的形态学操作手段膨胀(理解为背景的膨胀)跟卷积操作类似,假设有图像A和及结构元素B,结构元素B在A上面移动,其中B来定义其中心为锚点,计算B覆盖下A的最大像素用来替换锚点的像素,其中B作为结构体可以是任意形状。通常我们可...原创 2020-01-12 19:36:05 · 261 阅读 · 0 评论 -
10.模糊图像二
主要内容中值滤波双边滤波中值滤波2.1统计排序滤波2.2对椒盐噪声有较好的抑制作用双边滤波均值滤波无法克服边缘像素信息丢失缺陷。原因是均值滤波是基于平均权重高斯模糊部分克服了该缺陷,但是无法完全避免,因为没有考虑到像素点的不同高斯双边模糊是边缘保留的滤波方法,避免了边缘信息丢失,保留了图像轮廓不变,考虑了像素点的不同双边模糊所需要输入的两个信息空域核与值域核相关A...原创 2020-01-12 19:30:20 · 199 阅读 · 0 评论 -
9.模糊图像一
1.主要内容模糊原理2.,模糊原理常用操作smooth/Blur卷积操作通常这些卷积算子计算都是线性操作,所以又叫线性滤波3.对边缘像素的处理4.归一化盒子滤波(均值滤波)//均值模糊blur(Mat src,Mat dst,Size(xradius,yradius),Point(-1,-1));5.高斯滤波(可以保留原来像素的一些特质)//高斯模糊Gaussia...原创 2020-01-12 19:25:59 · 236 阅读 · 0 评论 -
8.绘制形状与文字
基本内容Point和Scalar的运用绘制线、矩形、圆、椭圆等基本几何形状绘制线、矩形、圆、椭圆等基本几何形状画线 cv::line (LINE_4\LINE_8\LINE_AA)画椭圆cv::ellipse画矩形cv::rectangle画圆cv::circle画填充cv::fillPolyputTextRandomLineDemo()随机数生成5.1 生成高斯随机数g...原创 2020-01-11 10:40:52 · 227 阅读 · 0 评论 -
7.调整图像亮度与对比度
图像变换可看作两种1.1像素变换——点操作1.2领域操作——区域重要API//创建一张跟原图像大小和类型一样的空白图像、像素值初始值为0Mat new_image=Mat::zeros(image.size(),image.type());//确保值大小范围在0-255之间saturate_cast<uchar>(value);//给每个像素点每个通道赋值Mat....原创 2020-01-11 10:30:16 · 243 阅读 · 0 评论 -
6.图像混合
1.主要内容理论——线性混合操作相关API(addweighted)代码演示addmultiply2.线性混合原理 数学公式其中α的取值范围在0-1之间其中APIaddWeighted ()实现图像的线性混合,就跟PPT的动画效果那样,两层图像融合在一起,注意叠加混合和线性混合是不同的,叠加混合是loge直接粘贴过去,而线性混合是将两幅图像融合在一起,朦朦胧胧那种功能说...原创 2020-01-10 23:34:21 · 206 阅读 · 0 评论 -
5.图像操作
1.主要内容读写图像读写像素修改像素值2.读写图像imread 可以指定加载为灰度或者RGB图像 imwrite 保存图像文件,类型由扩展名决定3.读写像素 读一个GRAY像素点的像素值(CV_8UC1)Scalar intensity = img.at<uchar>(y, x);或者 Scalar intensity = img.at<uchar...原创 2019-11-14 16:33:55 · 249 阅读 · 0 评论 -
4.Mat对象
1.主要内容Mat对象与Ip|Image对象Mat对象分为两个部分,头部和数据部分Mat定义数组2.Mat对象创建cv::Mat::Mat构造函数Mat M(2,2,CV_8UC3,Scalar(0,0,255))其中前两个参数分别表示行(row)跟列(column),第三个CV_8UC3中的8表示每个通道占8位,U表示无符号,C表示Char类型,3表示通道数目是3,第四个参数是向...原创 2019-11-07 11:40:36 · 253 阅读 · 0 评论 -
3.矩阵的掩模操作
1.主要内容-了解怎样操作像素-获取图像像素指针-什么叫做掩膜操作2.常用API1.CV_Assert()函数CV_Assert()若括号中的表达式值为false,则返回一个错误信息。ssert 宏的原型定义在<assert.h>中, 其作用是如果它的条件返回错误, 则终止程序 执行,原型定义:#include <assert.h> void assert...原创 2019-11-07 11:15:43 · 374 阅读 · 0 评论 -
2.图像的加载、显示、修改、保存
1.主要内容:加载图像(cv::imread)修改图像(cv::cvtColor)保存图像(cv::imwrite)2.加载图像(cv::imread)imread功能是将加载图像文件成为一个Mat对象,其中第一个参数表示图像文件名称第二个参数,表示加载的图像是什么类型,支持常见的三个参数值 IMREAD_UNCHANGED(<0)表示原图,不作任何改变IMRE...原创 2019-11-06 12:19:29 · 424 阅读 · 0 评论 -
1.opencv的环境配置(Windows环境下)
1.OpenCV介绍在各个核心模块中,我主要学习的部分为Image Process、2D Feature、Object DetectionèVideo Analysis首先学习Image Process2.本次所使用到的开发环境Opencv3.1.0+VS20152.1环境配置过程系统环境变量设置2.2开发环境搭建VC++目录+包含目录+include、opencv、opencv...原创 2019-11-06 12:01:52 · 334 阅读 · 0 评论