02 2020 档案

摘要:寻找最值:minMaxLoc 函数 minMaxLoc 函数的作用是在数组中找到全局最小和最大值。 void minMaxLoc(InputArray src, double* minVal, double* maxVal = 0, Point* minLoc = 0, Point* maxLoc 阅读全文
posted @ 2020-02-29 21:25 狂奔的小学生 阅读(14057) 评论(1) 推荐(2) 编辑
摘要:对比直方图:compareHist 函数 double compareHist(InputArray H1, InputArray H2, int method); H1,H2,是要进行比较的直方图。 method,比较方法。有如下选择: 方法名 标识符 计算公式 相关 Correlation HI 阅读全文
posted @ 2020-02-28 20:28 狂奔的小学生 阅读(3500) 评论(0) 推荐(0) 编辑
摘要:直方图概述 简单来说,直方图就是对数据进行统计的一种方法,这些数据可以是梯度、方向、色彩或任何其他特征。它的表现形式是一种二维统计表,横纵坐标分别是统计样本和该样本对应的某个属性的度量。 计算直方图:calcHist 函数 calcHist 函数用于计算一个或多个阵列的直方图。 void calcH 阅读全文
posted @ 2020-02-28 17:57 狂奔的小学生 阅读(1874) 评论(0) 推荐(0) 编辑
摘要:实现图像修补、物体去除:inpaint 函数 void inpaint(InputArray src, InputArray inpaintMask, OutputArray dst, double inpaintRadius, int flags); src,输入图像,即源图像,填 Mat 类对象 阅读全文
posted @ 2020-02-27 14:50 狂奔的小学生 阅读(2078) 评论(0) 推荐(1) 编辑
摘要:计算轮廓面积:contourArea 函数 double contourArea(InputArray contour, bool oriented = false); contour,输入的二维点集(轮廓顶点),可以是 vector 或 Mat 类型。 oriented,面向区域标识符。有默认值 阅读全文
posted @ 2020-02-26 14:16 狂奔的小学生 阅读(23030) 评论(0) 推荐(2) 编辑
摘要:计算矩的目的 从一幅图像计算出来的矩集,不仅可以描述图像形状的全局特征,而且可以提供大量关于该图像不同的几何特征信息,如大小,位置、方向和形状等。这种描述能力广泛应用于各种图像处理、计算机视觉和机器人技术领域的目标识别与方位估计中。同时矩函数在图像分析中也有着广泛的应用,如模式识别、目标分类、目标识 阅读全文
posted @ 2020-02-24 14:25 狂奔的小学生 阅读(6739) 评论(0) 推荐(0) 编辑
摘要:寻找包裹轮廓的最小圆:minEnclosingCircle 函数 返回圆应满足:① 轮廓上的点均在圆形空间内。② 没有面积更小的满足条件的圆。 void minEnclosingCircle(InputArray points, Point2f& center, float& radius); po 阅读全文
posted @ 2020-02-23 22:25 狂奔的小学生 阅读(9193) 评论(0) 推荐(0) 编辑
摘要:寻找包裹轮廓的最小正矩形:boundingRect 函数 返回矩阵应满足:① 轮廓上的点均在矩阵空间内。② 矩阵是正矩阵(矩形的边界与图像边界平行)。 Rect boundingRect(InputArray points); 唯一一个参数是输入的二维点集,可以是 vector 或 Mat 类型。 阅读全文
posted @ 2020-02-22 21:34 狂奔的小学生 阅读(7948) 评论(0) 推荐(0) 编辑
摘要:生成逼近曲线:approxPolyDP 函数 该函数采用 Douglas-Peucker 算法(也称迭代终点拟合算法)。可以有效减少多边形曲线上点的数量,生成逼近曲线,简化后继操作。 经典的 Douglas-Peucker 算法描述如下: 在曲线首尾两点 A,B 之间连接一条直线 AB,该直线为曲线 阅读全文
posted @ 2020-02-22 21:20 狂奔的小学生 阅读(8174) 评论(0) 推荐(1) 编辑
摘要:凸包的定义: 包含点集 S 所有点的最小凸多边形称为凸包。 凸包绘制原理:Graham 扫描法 首先选择 y 方向上最低的点作为起始点 p0。 然后以 p0 为原点,建立极坐标系,做逆时针极坐标扫描,依次添加凸包点 p1,p2 ...pn(排序顺序根据极坐标角度大小) 若当前扫描点与下一个点构成的直 阅读全文
posted @ 2020-02-22 11:02 狂奔的小学生 阅读(1316) 评论(0) 推荐(0) 编辑
摘要:轮廓图像与 Canny 图像的区别 一个轮廓一般对应一系列的点,也就是图像中的一条曲线。轮廓图像和 Canny 图像乍看起来表现几乎是一致的,但其实组成两者的数据结构差别很大: Canny 边缘图像是一个点的集合,点与点之间没有联系。 轮廓图像是一个点集的集合,每个点集(即轮廓)内的点都是相邻的,点 阅读全文
posted @ 2020-02-21 22:11 狂奔的小学生 阅读(8569) 评论(0) 推荐(0) 编辑
摘要:直方图均匀化简介 从这张未经处理的灰度图可以看出,其灰度集中在非常小的一个范围内。这就导致了图片的强弱对比不强烈。 直方图均衡化的目的,就是把原始的直方图变换为在整个灰度范围(0~255)内均匀分布的形式,从而增加像素灰度值的动态范围,达到增强图像整体对比度的效果。 直方图均衡化的列表计算 序号 运 阅读全文
posted @ 2020-02-21 13:30 狂奔的小学生 阅读(6760) 评论(0) 推荐(1) 编辑
摘要:仿射变换的基本概念 仿射变换是一种二维坐标(x, y)到二维坐标(u, v)的线性变换,其数学表达式形式如下: 对应的齐次坐标矩阵表示形式为: 仿射变换保持了二维图形的“平直性”(直线经仿射变换后依然为直线)和“平行性”(直线之间的相对位置关系保持不变,平行线经仿射变换后依然为平行线,且直线上点的位 阅读全文
posted @ 2020-02-20 21:34 狂奔的小学生 阅读(2000) 评论(0) 推荐(0) 编辑
摘要:重映射的概念 重映射,就是把一幅图像中某位置的像素放置到另一个图片指定位置的过程。 实现重映射:remap 函数 将图像进行重映射几何变换,基于的公式为:dst (x, y) = src ( mapx (x, y), mapy (x, y) )。即 mapx 在(x,y)位置上存储的是目标像素的横坐 阅读全文
posted @ 2020-02-20 15:11 狂奔的小学生 阅读(2156) 评论(0) 推荐(0) 编辑
摘要:霍夫圆变换原理 霍夫圆变换的基本原理与霍夫线变换(https://www.cnblogs.com/bjxqmy/p/12331656.html)大体类似。 对直线来说,一条直线能由极径极角(r,θ)表示,而对于圆来说,我们需要三个参数:圆心(a,b),半径 r。 笛卡尔坐标系中圆的方程为: (x-a 阅读全文
posted @ 2020-02-19 20:45 狂奔的小学生 阅读(40743) 评论(0) 推荐(8) 编辑
摘要:霍夫线变换的原理 一条直线在图像二维空间可由两个变量表示,有以下两种情况: ① 在笛卡尔坐标系中:可由参数斜率和截距(k,b)表示。 ② 在极坐标系中:可由参数极经和极角(r,θ)表示。 对于霍夫线变换,我们将采用第二种方式极坐标系来表示直线,因此直线的表达式可为: 化简便可得到: 对于(x0,y0 阅读全文
posted @ 2020-02-19 16:00 狂奔的小学生 阅读(7352) 评论(0) 推荐(2) 编辑
摘要:Laplacian 算子简介 求多元函数的二阶导数的映射又称为 Laplacian 算子: 计算拉普拉斯变换:Laplacian 函数 void Laplacian(InputArray src, OutputArray dst, int ddepth, int ksize = 1, double 阅读全文
posted @ 2020-02-18 14:33 狂奔的小学生 阅读(1475) 评论(0) 推荐(0) 编辑
摘要:sobel 算子的基本概念 sobel 算子是一个主要用于边缘检测的离散微分算子,它结合了高斯平滑和微分求导,用于计算图像灰度函数的近似梯度。 其基础来自于一个事实,即在边缘部分,像素值出现“跳跃”或者较大的变化。如果在此边缘部分求取一阶导数,会看到极值的出现。正如下图所示: sobel 算子的计算 阅读全文
posted @ 2020-02-18 13:28 狂奔的小学生 阅读(2294) 评论(0) 推荐(0) 编辑
摘要:边缘检测的一般步骤 【第一步】滤波 边缘检测的算法主要是基于图像强度的一阶和二阶导数,但导数通常对噪声很敏感,因此必须采用滤波器来改善与噪声有关的边缘检测器的性能。常见的滤波方法主要有高斯滤波,即采用离散化的高斯函数产生一组归一化的高斯核,然后基于高斯核对图像灰度矩阵的每一点进行加权求和。 【第二步 阅读全文
posted @ 2020-02-18 11:28 狂奔的小学生 阅读(554) 评论(0) 推荐(0) 编辑
摘要:阈值化 在对图像进行处理操作的过程中,我们常常需要对图像中的像素做出取舍与决策,直接剔除一些低于或高于一定值的像素。 阈值分割可以视为最简单的图像分割方法。比如基于图像中物体与背景之间的灰度差异,可以利用阈值分割出我们需要的物体。这种分割是像素级的分割,为了从一幅图像中提取我们需要的部分,应该用图像 阅读全文
posted @ 2020-02-16 20:54 狂奔的小学生 阅读(2299) 评论(0) 推荐(0) 编辑
摘要:我们经常会将某种尺寸的图像转化为其他尺寸的图像,如果需要放大或者缩小图像的尺寸,在 OpenCV 中可以使用如下两种方法: resize 函数,最直接的方法。 pyrUp 和 pyrDown 函数,即图像金字塔相关的两个函数,对图像进行向上采样和向下采样的操作。 pyrUp 和 pyrDown 其实 阅读全文
posted @ 2020-02-16 14:52 狂奔的小学生 阅读(6682) 评论(0) 推荐(0) 编辑
摘要:漫水填充:floodFill 函数 简单来说,漫水填充就是自动选中与种子像素相连的区域,利用指定颜色进行区域颜色填充。Windows 画图工具中的油漆桶功能和 Photoshop 的魔法棒选择工具,都是漫水填充的改进和延伸。 //第一个版本 int floodFill(InputOutputArra 阅读全文
posted @ 2020-02-14 21:23 狂奔的小学生 阅读(1599) 评论(0) 推荐(1) 编辑
摘要:扩充图像边界:copyMakeBorder 函数 在图像处理过程中,因为卷积算子有一定大小,所以就会导致图像一定范围的边界不能被处理,这时就需要将边界进行适当扩充。 void copyMakeBorder(InputArray src, OutputArray dst, int top, int b 阅读全文
posted @ 2020-02-14 09:25 狂奔的小学生 阅读(4381) 评论(0) 推荐(0) 编辑
摘要:开运算:先腐蚀后膨胀。 能够排除小亮点。 闭运算:先膨胀后腐蚀。 能够排除小黑点。 形态学梯度:膨胀图 — 腐蚀图。 对二值图像进行这一操作,可将图块的边缘突出出来,故可用来保留物体边缘轮廓。 顶帽:原图 — 开运算结果。 可以认为是找到那些被开运算排除的小亮点。 黑帽:闭运算结果 — 原图。 可以 阅读全文
posted @ 2020-02-11 16:44 狂奔的小学生 阅读(6117) 评论(0) 推荐(0) 编辑
摘要:腐蚀与膨胀是形态学滤波。其中,腐蚀是最小值滤波,膨胀是最大值滤波,即分别选取内核中的最小值与最大值赋值给锚点。若内核为 N×1 或 1×N 形状,可用于横纵方向直线检测。 膨胀:dilate 函数 void dilate (InputArray src, OutputArray dst, Input 阅读全文
posted @ 2020-02-11 15:50 狂奔的小学生 阅读(2439) 评论(0) 推荐(0) 编辑
摘要:图像滤波,指在尽量保留图像细节特征的条件下对目标图像的噪声进行抑制,是图像与处理中不可缺少的操作。 邻域算子,指利用给定像素及其周围的像素值,决定此像素的最终输出值的一种算子。线性邻域滤波器就是一种常见的邻域算子,像素的输出值取决于输入像素及其周围像素的加权和,权重是邻域算子相应位置上的值。 线性滤 阅读全文
posted @ 2020-02-11 12:00 狂奔的小学生 阅读(1284) 评论(0) 推荐(0) 编辑
摘要:归一化:就是将数据通过某种算法,限制需要的一定范围内。 归一化的目的:简而言之,是使得没有可比性的数据变得具有可比性,同时又保持相比较的两个数据之间的相对关系,如大小关系;或是为了作图,原来很难在一张图上作出来,归一化后就可以很方便的给出图上的相对位置等。 矩阵归一化:normalize 函数 vo 阅读全文
posted @ 2020-02-10 19:57 狂奔的小学生 阅读(3198) 评论(0) 推荐(2) 编辑
摘要:src.at<uchar>(i,j)[0] = saturate_cast<uchar>(data); if (data < 0) data = 0; else if (data > 255) data = 255; 好简单的博客,(●'◡'●) 阅读全文
posted @ 2020-02-10 19:47 狂奔的小学生 阅读(227) 评论(0) 推荐(0) 编辑
摘要:对于三通道或四通道图像,有时要对某一通道的像素值进行修改或展示,这就需要进行通道分离操作。修改后,若要进行结果展示,就需要重新将各通道合并。 通道分离:split 函数 void split (InputArray m, OutputArrayOfArrays mv); m ,需要进行分离的多通道矩 阅读全文
posted @ 2020-02-10 19:35 狂奔的小学生 阅读(690) 评论(0) 推荐(0) 编辑
摘要:计算数组加权和:addWeighted 可实现两个大小、类型均相同的数组(一般为 Mat 类型)按照设定权重叠加在一起。 void addWeighted(InputArray src1,double alpha,InputArray src2,double beta,double gamma,Ou 阅读全文
posted @ 2020-02-10 19:10 狂奔的小学生 阅读(1434) 评论(0) 推荐(0) 编辑
摘要:感兴趣区域:ROI 对感兴趣区域进行的一系列操作,相当于直接在原图相应部分进行操作。 Mat imageROI = srcImage(Rect(0,0,dstImage.cols, dstImage.rows)); srcImage 为原图像 Rect(0,0,dstImage.cols, dstI 阅读全文
posted @ 2020-02-10 18:57 狂奔的小学生 阅读(2587) 评论(0) 推荐(0) 编辑
摘要:动态地址访问像素:src.at<Vec3b>(i, j)[0]、src.at<uchar>(i, j) int b = src.at<Vec3b>(i, j)[0];int g = src.at<Vec3b>(i, j)[1];int r = src.at<Vec3b>(i, j)[2]; 用来访问 阅读全文
posted @ 2020-02-10 17:32 狂奔的小学生 阅读(3104) 评论(0) 推荐(0) 编辑
摘要:getTickCount 函数 返回 CPU 自某个事件(如启动电脑)以来走过的时钟周期数。 getTickFrequency 函数 返回 CPU 一秒钟所走过的时钟周期数。 二者结合使用,可以用来计算和观察一段程序或一种算法耗时。 代码演示: #include<opencv.hpp> using 阅读全文
posted @ 2020-02-10 16:27 狂奔的小学生 阅读(1180) 评论(0) 推荐(1) 编辑
摘要:鼠标操作:setMouseCallback 函数 借助回调函数,实现对鼠标每次操作的相应,即每进行一步鼠标操作,都会执行一次回调函数。 void setMouseCallback(const string& window_name, MouseCallback on_Mouse, void* use 阅读全文
posted @ 2020-02-10 13:46 狂奔的小学生 阅读(3082) 评论(0) 推荐(0) 编辑
摘要:创建滑动条:createTrackbar 函数 createTrackbar 函数用于创建一个可以调整数值的滑动条,并将滑动条附加在指定的窗口上。 int createTrackbar(const string& trackbar_name,const string& window_name,int 阅读全文
posted @ 2020-02-10 11:54 狂奔的小学生 阅读(1914) 评论(0) 推荐(0) 编辑
摘要:加载图像:imread 函数 Mat imread(const string& filename, int flags = 1); filename:需要载入的图像的路径名。 flags:加载图像的颜色类型,默认值为 1。flags = 1(IMREAD_COLOR):返回一个 BGR 类型的三通道 阅读全文
posted @ 2020-02-09 20:45 狂奔的小学生 阅读(725) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示