![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Opencv
文章平均质量分 59
我有一個夢想
IT
展开
-
OpenCV透视变换示例
OpenCV透视变换示例原创 2022-10-12 17:04:24 · 778 阅读 · 0 评论 -
OpenCV Resize图像大小后的补边
OpenCV Resize图像大小后的补边原创 2022-02-24 14:19:07 · 2724 阅读 · 0 评论 -
OpenCV——相机标定(Camera calibration)
摄像机标定(Camera calibration)简单来说是从世界坐标系换到图像坐标系的过程,也就是求最终的投影矩阵 P PP 的过程。所涉及的坐标系世界坐标系(world coordinate system); 相机坐标系(camera coordinate system); 图像坐标系(image coordinate system);标定的过程分为两个部分:第一步是从世界坐标系转换为相机坐标系,这一步是三维点到三维点的转换,包括 R RR,t tt (相机外参)等参数;第二部是从.原创 2021-06-25 16:47:08 · 5732 阅读 · 2 评论 -
OpenCV——模板匹配
通过模板与目标图像进行寻找最佳匹配基本思想是将模板图像在目标图像上滑动逐一对比,通过统计的基本方法进行匹配,比如方差检验,相关性检验等方法来寻找最佳匹配void matchTemplate( InputArray image, InputArray templ, OutputArray result, int method, InputArray mask = noArray() );Templ是匹配图, Image是原图, R原创 2021-06-23 11:19:39 · 249 阅读 · 0 评论 -
OpenCV——图像矩
矩是描述图像特征的算子,被广泛用于图像检索和识别、图像匹配、图像重建、图像压缩以及运动图像序列分析等领域。几何矩与中心矩图像几何矩的计算方式如式其中I(x,y)是像素(x,y)处的像素值。当x和y同时取值0时称为零阶矩,零阶矩可以用于计算某个形状的质心,当x和y分别取值0和1时被称为一阶矩,以此类推。图像质心的计算公式图像中心距计算方式图像归一化几何矩计算方式计算图像矩的moments()函数Moments moments( InputArray array..原创 2021-06-23 09:32:38 · 1124 阅读 · 1 评论 -
OpenCV——轮廓外接多边形
外接矩形取轮廓最大外接矩形Rect boundingRect( InputArray array );array:输入的灰度图像或者2D点集,数据类型为vector或者Mat。该函数可以求取包含输入图像中物体轮廓或者2D点集的最大外接矩形,函数只有一个参数,可以是灰度图像或者2D点集,灰度图像的参数类型为Mat,2D点集的参数类型为vector或者Mat。该函数的返回值是一个Rect类型的变量,该变量可以直接用rectangle()函数绘制矩形。返回值共有四个参数,前两个参数是最大外接矩形左原创 2021-06-22 15:44:48 · 2560 阅读 · 0 评论 -
OpenCV——计算轮廓长度/周长和面积
轮廓面积轮廓面积是指每个轮廓中所有的像素点围成区域的面积,单位为像素。double contourArea( InputArray contour, bool oriented = false );contour:轮廓的像素点 oriented:区域面积是否具有方向的标志,true表示面积具有方向性,false表示不具有方向性,默认值为不具有方向性的false。函数的返回值是统计轮廓面积的结果,数据类型为double。函数第一个参数表示轮廓的像素点,数据类型为vector或者Mat,相邻的原创 2021-06-22 14:37:35 · 11276 阅读 · 5 评论 -
OpenCV——直线拟合
相比于直线检测,直线拟合的最大特点是将所有数据只拟合出一条直线void fitLine( InputArray points, OutputArray line, int distType, double param, double reps, double aeps );points:输入待拟合直线的2D或者3D点集。 line:输出描述直线的参数,2D点集描述参数为Vec4f类型,3D点集描述参数为Vec6f类型。 distType原创 2021-06-22 14:11:18 · 4956 阅读 · 1 评论 -
OpenCV——轮廓检测与绘制
图像的轮廓不仅能够提供物体的边缘,而且还能提供物体边缘之间的层次关系以及拓扑关系。带有结构关系的边缘检测,这种结构关系可以表明图像中连通域或者某些区域之间的关系。图为一个具有4个不连通边缘的二值化图像,由外到内依次为0号、1号、2号、3号条边缘。为了描述不同轮廓之间的结构关系,定义由外到内的轮廓级别越来越低,也就是高一层级的轮廓包围着较低层级的轮廓,被同一个轮廓包围的多个不互相包含的轮廓是同一层级轮廓。例如在图中,0号轮廓层级比1号和第2号轮廓的层及都要高,2号轮廓包围着3号轮廓,因此2号轮廓的层级原创 2021-06-22 11:19:09 · 654 阅读 · 0 评论 -
OpenCV霍夫变换直线检测
霍夫变换(Hough Transform)是图像处理中检测是否存在直线的重要算法,该算法是由Paul Hough在1962年首次提出,最开始只能检测图像中的直线,但是霍夫变换经过不断的扩展和完善已经可以检测多种规则形状,例如圆形、椭圆等。霍夫变换通过将图像中的像素在一个空间坐标系中变换到另一个坐标空间坐标系中,使得在原空间中具有形同特性的曲线或者直线映射到另一个空间中形成峰值,从而把检测任意形状的问题转化为统计峰值的问题。霍夫变换通过构建检测形状的数学解析式将图像中像素点映射到参数空间中,例如我们想检测原创 2021-06-21 18:32:13 · 4955 阅读 · 0 评论 -
OpenCV——图像形态学操作
图像形态学腐蚀可以将细小的噪声区域去除,但是会将图像主要区域的面积缩小,造成主要区域的形状发生改变;图像形态学膨胀可以扩充每一个区域的面积,填充较小的空洞,但是同样会增加噪声的面积。根据两者的特性将图像腐蚀和膨胀适当的结合,便可以既去除图像中的噪声,又不缩小图像中主要区域的面积;既填充了较小的空洞,又不增加噪声所占的面积。...原创 2021-06-21 10:56:01 · 794 阅读 · 2 评论 -
OpenCV——图像膨胀
图像的膨胀与图像腐蚀是一对相反的过程,与图像腐蚀相似,图像膨胀同样需要结构元素用于控制图像膨胀的效果。结构元素可以任意指定结构的中心点,并且结构元素的尺寸和具体内容都可以根据需求自己定义。定义结构元素之后,将结构元素的中心点依次放到图像中每一个非0元素处,如果原图像中某个元素被结构元素覆盖,但是该像素的像素值不与结构元素中心点对应的像素点的像素值相同,那么将原图像中的该像素的像素值修改为结构元素中心点对应点的像素值。图像的膨胀过程示意图如图所示,图中左侧为待膨胀的原图像,中间为结构元素,首先将结构元素的中心原创 2021-06-18 16:56:59 · 4790 阅读 · 1 评论 -
OpenCV——图像腐蚀
图像的腐蚀过程与图像的卷积操作类似,都需要模板矩阵来控制运算的结果,在图像的腐蚀和膨胀中这个模板矩阵被称为结构元素。与图像卷积相同,结构元素可以任意指定图像的中心点,并且结构元素的尺寸和具体内容都可以根据需求自己定义。定义结构元素之后,将结构元素的中心点依次放到图像中每一个非0元素处,如果此时结构元素内所有的元素所覆盖的图像像素值均不为0,则保留结构元素中心点对应的图像像素,否则将删除结构元素中心点对应的像素。图像的腐蚀过程示意图如图6-12所示,图6-12中左侧为待腐蚀的原图像,中间为结构元素,首先将结构原创 2021-06-18 16:23:59 · 3379 阅读 · 0 评论 -
OpenCV——图像连通域
图像的连通域是指图像中具有相同像素值并且位置相邻的像素组成的区域,连通域分析是指在图像中寻找出彼此互相独立的连通域并将其标记出来。一般情况下,一个连通域内只包含一个像素值,因此为了防止像素值波动对提取不同连通域的影响,连通域分析常处理的是二值化后的图像。...原创 2021-06-18 14:12:18 · 9795 阅读 · 3 评论 -
OpenCV——Rect矩形类
typedef Rect_<int> Rect;/*! The 2D up-right rectangle class The class represents a 2D rectangle with coordinates of the specified data type. Normally, cv::Rect ~ cv::Rect_<int> is used.*/template<typename _Tp> class Rect_{pu.原创 2021-06-18 11:05:26 · 1366 阅读 · 0 评论 -
OpenCV——图像距离变换
图像中两个像素之间的距离有多种定义方式,图像处理中常用的距离有欧式距离、街区距离和棋盘距离欧式距离 略原创 2021-06-15 16:34:24 · 2694 阅读 · 0 评论 -
OpenCV——边缘检测Canny算子
边缘检测Canny算子该算法不容易受到噪声的影响,能够识别图像中的弱边缘和强边缘,并结合强弱边缘的位置关系,综和给出图像整体的边缘信息。Canny边缘检测算法是目前最优越的边缘检测算法之一,该方法的检测过程分为以下5个步骤: Step1:使用高斯滤波平滑图像,减少图像中噪声。一般情况下使用式所示的5×5的高斯滤波器。 ...原创 2021-06-15 15:31:04 · 821 阅读 · 0 评论 -
OpenCV——边缘检测Laplacian算子(拉普拉斯算子)
Laplacian算子(拉普拉斯算子)Laplacian算子具有各方向同性的特点,能够对任意方向的边缘进行提取,具有无方向性的优点,因此使用Laplacian算子提取边缘不需要分别检测X方向的边缘和Y方向的边缘,只需要一次边缘检测即可。Laplacian算子是一种二阶导数算子,对噪声比较敏感,因此常需要配合高斯滤波一起使用。...原创 2021-06-15 15:07:08 · 4475 阅读 · 0 评论 -
OpenCV——边缘检测原理
边缘检测原理图像的边缘指的是图像中像素灰度值突然发生变化的区域,如果将图像的每一行像素和每一列像素都描述成一个关于灰度值的函数,那么图像的边缘对应在灰度值函数中是函数值突然变大的区域。函数值的变化趋势可以用函数的导数描述。当函数值突然变大时,导数也必然会变大,而函数值变化较为平缓区域,导数值也比较小,因此可以通过寻找导数值较大的区域去寻找函数中突然变化的区域,进而确定图像中的边缘位置。图5-27给出一张含有边缘的图像,图像每一行的像素灰度值变化可以用图中下方的曲线表示。通过像素灰度值曲线可以看出图像原创 2021-06-15 14:33:38 · 1447 阅读 · 0 评论 -
OpenCV——双边滤波
前面学习的一些滤波方法会是的图像边缘信息变弱或者消失,因此需要一种能够对图像边缘信息进行保留的滤波算法,双边滤波就是经典的常用的能够保留图像边缘信息的滤波算法之一。双边滤波是一种综合考虑滤波器内图像空域信息和滤波器内图像像素灰度值相似性的滤波算法,可以实现在保留区域信息的基础上实现对噪声的去除、对局部边缘的平滑。双边滤波对高频率的波动信号起到平滑的作用,同时保留大幅值的信号波动,进而实现对保留图像中边缘信息的作用。双边滤波的示意图如图5-24所示,双边滤波器是两个滤波器的结合,分别考虑空域信息和值域信息,使原创 2021-06-15 13:48:56 · 1376 阅读 · 0 评论 -
OpenCV——中值滤波
中值滤波就是用滤波器范围内所有像素值的中值来替代滤波器中心位置像素值的滤波方法,是一种基于排序统计理论的能够有效抑制噪声的非线性信号处理方法。中值滤波不依赖于滤波器内那些与典型值差别很大的值,因此对斑点噪声和椒盐噪声的处理具有较好的处理效果。...原创 2021-06-15 10:56:50 · 1266 阅读 · 0 评论 -
OpenCV——可分离滤波
自定义滤波无论是图像卷积还是滤波,在原图像上移动滤波器的过程中每一次的计算结果都不会影响到后面过程的计算结果,因此图像滤波是一个并行的算法,在可以提供并行计算的处理器中可以极大的加快图像滤波的处理速度。...原创 2021-06-15 10:40:52 · 748 阅读 · 1 评论 -
OpenCV——Mat reshape函数
Mat reshape(int cn, int rows=0) const;原创 2021-06-15 10:05:40 · 522 阅读 · 1 评论 -
OpenCV——高斯滤波
高斯滤波高斯滤波器是一类根据高斯函数的形状来选择权值的线性平滑滤波器。高斯平滑滤波器对于抑制服从正态分布的噪声非常有效。一维零均值高斯函数为:g(x)=exp(-x^2/(2sigma^2)原创 2021-06-11 16:51:09 · 5326 阅读 · 1 评论 -
OpenCV——方框滤波
boxFilter方框滤波是均值滤波的一般形式,在均值滤波中,将滤波器中所有的像素值求和后的平均值作为滤波后结果,方框滤波也是求滤波器内所有像素值的之和,但是方框滤波可以选择不进行归一化,就是将所有像素值的和作为滤波结果,而不是所有像素值的平均值。void boxFilter( InputArray src, OutputArray dst, int ddepth, Size ksize, Point anchor = Point(-1,.原创 2021-06-11 16:08:12 · 360 阅读 · 0 评论 -
OpenCV——均值滤波
均值滤波将滤波器内所有的像素值都看作中心像素值的测量,将滤波器内所有的像数值的平均值作为滤波器中心处图像像素值。滤波器内的每个数据表示对应的像素在决定中心像素值的过程中所占的权重,由于滤波器内所有的像素值在决定中心像素值的过程中占有相同的权重,因此滤波器内每个数据都相等。均值滤波的优点是在像素值变换趋势一致的情况下,可以将受噪声影响而突然变化的像素值修正到接近周围像素值变化的一致性下。但是这种滤波方式会缩小像素值之间的差距,使得细节信息变得更加模糊,滤波器范围越大,变模糊的效果越明显。...原创 2021-06-11 15:36:53 · 3243 阅读 · 0 评论 -
OpenC——高斯噪声
OpenCV 中提供了fill()函数可以产生均匀分布或者高斯分布(正态分布)的随机数,我们可以利用该函数产生符合高斯分布的随机数,之后在图像中加入这些随机数即可void fill( InputOutputArray mat, int distType, InputArray a, InputArray b, bool saturateRange = false );mat:用于存放随机数的矩阵,目前只支持低于5通道的矩阵。 distType:随机数分布形式选择标志,目前生成的随机数支持均...原创 2021-06-11 14:54:43 · 1339 阅读 · 1 评论 -
OpenCV——直方图比较
compareHistdouble compareHist( InputArray H1, InputArray H2, int method );原创 2021-06-10 18:14:54 · 437 阅读 · 0 评论 -
OpenCV——归一化
normalizevoid normalize( InputArray src, InputOutputArray dst, double alpha = 1, double beta = 0, int norm_type = NORM_L2, int dtype = -1, InputArray mask = noArray());原创 2021-06-10 16:30:39 · 1609 阅读 · 0 评论 -
OpenCV——图像直方图
图像直方图是图像处理中非常重要的像素统计结果,图像直方图不再表征任何的图像纹理信息,而是对图像像素的统计。由于同一物体无论是旋转还是平移在图像中都具有相同的灰度值,因此直方图具有平移不变性、放缩不变性等优点,因此可以用来查看图像整体的变化形式,例如图像是否过暗、图像像素灰度值主要集中在哪些范围等,在特定的条件下也可以利用图像直方图进行图像的识别,例如对数字的识别。图像直方图简单来说就是统计图像中每个灰度值的个数,之后将图像灰度值作为横轴,以灰度值个数或者灰度值所占比率作为纵轴绘制的统计图。通过直方图可以原创 2021-06-10 15:19:38 · 295 阅读 · 0 评论 -
OpenCV——图像金字塔
图像金字塔:高斯金字塔、拉普拉斯金字塔高斯金字塔原创 2021-06-10 11:20:22 · 481 阅读 · 0 评论 -
OpenCV——绘制简单图像
绘制图像一般在检测方面用的比较多把常用的几个列一下 后面忘记了可以回来翻下画圆void circle(InputOutputArray img, Point center, int radius, const Scalar& color, int thickness = 1, int lineType = LINE_8, int shift = 0);画直线...原创 2021-06-10 10:14:22 · 286 阅读 · 0 评论 -
OpenCV——透视变换
透视变换是按照物体成像投影规律进行变换,即将物体重新投影到新的成像平面,示意图如图3-24所示。透视变换常用于机器人视觉导航研究中,由于相机视场与地面存在倾斜角使得物体成像产生畸变,通常通过透视变换实现对物体图像的校正。透视变换中,透视前的图像和透视后的图像之间的变换关系可以用一个3×3的变换矩阵表示,该矩阵可以通过两张图像中四个对应点的坐标求取,因此透视变换又称作“四点变换”。根据四个对应点求取变换矩阵的getPerspectiveTransform()函数和进行透视变换的warpPerspectiv原创 2021-06-10 09:54:25 · 1148 阅读 · 0 评论 -
OpenCV——仿射变换
getRotationMatrix2D()函数用于计算旋转矩阵和warpAffine()函数用于实现图像的仿射变换原创 2021-06-09 18:14:59 · 530 阅读 · 0 评论 -
OpenCV——图像二值化
OpenCV图像二值化提供了两种函数thresholddouble threshold( InputArray src, OutputArray dst, double thresh, double maxval, int type );原创 2021-06-09 16:13:33 · 2135 阅读 · 0 评论 -
OpenCV——计算图像均值和标准方差
计算图像均值计算图像每个通道的均值Scalar mean(InputArray src, InputArray mask = noArray());原创 2021-06-09 15:14:47 · 12925 阅读 · 0 评论 -
OpenCV——通道分离和合并
void split(const Mat& src, Mat* mvbegin);void split(InputArray m, OutputArrayOfArrays mv);原创 2021-06-09 14:37:39 · 605 阅读 · 0 评论 -
OpenCV——颜色空间转换
OpnenCV读取的颜色空间是 BGR 一般情况都需要转化为RGB可以通过OpenCV颜色空间转换函数cvtColor原创 2021-06-09 14:03:05 · 510 阅读 · 0 评论 -
OpenCV——保存图片和视频
保存图片 imwritebool cv :: imwrite(const String& filename,InputArray img,Const std::vector<int>& params = std::vector<int>())shi原创 2021-06-09 11:20:52 · 1240 阅读 · 0 评论 -
OpenCV——图像窗口namedWindow
图像窗口namedWindowvoid cv::namedWindow(const String & winname,int flags = WINDOW_AUTOSIZE)原创 2021-06-09 10:42:00 · 579 阅读 · 0 评论