自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(270)
  • 资源 (1)
  • 收藏
  • 关注

原创 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 5250 1

原创 OpenCV——轮廓检测与绘制

图像的轮廓不仅能够提供物体的边缘,而且还能提供物体边缘之间的层次关系以及拓扑关系。带有结构关系的边缘检测,这种结构关系可以表明图像中连通域或者某些区域之间的关系。图为一个具有4个不连通边缘的二值化图像,由外到内依次为0号、1号、2号、3号条边缘。为了描述不同轮廓之间的结构关系,定义由外到内的轮廓级别越来越低,也就是高一层级的轮廓包围着较低层级的轮廓,被同一个轮廓包围的多个不互相包含的轮廓是同一层级轮廓。例如在图中,0号轮廓层级比1号和第2号轮廓的层及都要高,2号轮廓包围着3号轮廓,因此2号轮廓的层级

2021-06-22 11:19:09 787

原创 OpenCV霍夫变换直线检测

霍夫变换(Hough Transform)是图像处理中检测是否存在直线的重要算法,该算法是由Paul Hough在1962年首次提出,最开始只能检测图像中的直线,但是霍夫变换经过不断的扩展和完善已经可以检测多种规则形状,例如圆形、椭圆等。霍夫变换通过将图像中的像素在一个空间坐标系中变换到另一个坐标空间坐标系中,使得在原空间中具有形同特性的曲线或者直线映射到另一个空间中形成峰值,从而把检测任意形状的问题转化为统计峰值的问题。霍夫变换通过构建检测形状的数学解析式将图像中像素点映射到参数空间中,例如我们想检测

2021-06-21 18:32:13 5379

原创 OpenCV——图像形态学操作

图像形态学腐蚀可以将细小的噪声区域去除,但是会将图像主要区域的面积缩小,造成主要区域的形状发生改变;图像形态学膨胀可以扩充每一个区域的面积,填充较小的空洞,但是同样会增加噪声的面积。根据两者的特性将图像腐蚀和膨胀适当的结合,便可以既去除图像中的噪声,又不缩小图像中主要区域的面积;既填充了较小的空洞,又不增加噪声所占的面积。...

2021-06-21 10:56:01 1120 2

原创 OpenCV——图像膨胀

图像的膨胀与图像腐蚀是一对相反的过程,与图像腐蚀相似,图像膨胀同样需要结构元素用于控制图像膨胀的效果。结构元素可以任意指定结构的中心点,并且结构元素的尺寸和具体内容都可以根据需求自己定义。定义结构元素之后,将结构元素的中心点依次放到图像中每一个非0元素处,如果原图像中某个元素被结构元素覆盖,但是该像素的像素值不与结构元素中心点对应的像素点的像素值相同,那么将原图像中的该像素的像素值修改为结构元素中心点对应点的像素值。图像的膨胀过程示意图如图所示,图中左侧为待膨胀的原图像,中间为结构元素,首先将结构元素的中心

2021-06-18 16:56:59 5159 1

原创 OpenCV——图像腐蚀

图像的腐蚀过程与图像的卷积操作类似,都需要模板矩阵来控制运算的结果,在图像的腐蚀和膨胀中这个模板矩阵被称为结构元素。与图像卷积相同,结构元素可以任意指定图像的中心点,并且结构元素的尺寸和具体内容都可以根据需求自己定义。定义结构元素之后,将结构元素的中心点依次放到图像中每一个非0元素处,如果此时结构元素内所有的元素所覆盖的图像像素值均不为0,则保留结构元素中心点对应的图像像素,否则将删除结构元素中心点对应的像素。图像的腐蚀过程示意图如图6-12所示,图6-12中左侧为待腐蚀的原图像,中间为结构元素,首先将结构

2021-06-18 16:23:59 3857

原创 OpenCV——图像连通域

图像的连通域是指图像中具有相同像素值并且位置相邻的像素组成的区域,连通域分析是指在图像中寻找出彼此互相独立的连通域并将其标记出来。一般情况下,一个连通域内只包含一个像素值,因此为了防止像素值波动对提取不同连通域的影响,连通域分析常处理的是二值化后的图像。...

2021-06-18 14:12:18 10284 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 1893

原创 OpenCV——图像距离变换

图像中两个像素之间的距离有多种定义方式,图像处理中常用的距离有欧式距离、街区距离和棋盘距离欧式距离 略

2021-06-15 16:34:24 3201

原创 OpenCV——边缘检测Canny算子

边缘检测Canny算子该算法不容易受到噪声的影响,能够识别图像中的弱边缘和强边缘,并结合强弱边缘的位置关系,综和给出图像整体的边缘信息。Canny边缘检测算法是目前最优越的边缘检测算法之一,该方法的检测过程分为以下5个步骤: Step1:使用高斯滤波平滑图像,减少图像中噪声。一般情况下使用式所示的5×5的高斯滤波器。 ...

2021-06-15 15:31:04 989

原创 OpenCV——边缘检测Laplacian算子(拉普拉斯算子)

Laplacian算子(拉普拉斯算子)Laplacian算子具有各方向同性的特点,能够对任意方向的边缘进行提取,具有无方向性的优点,因此使用Laplacian算子提取边缘不需要分别检测X方向的边缘和Y方向的边缘,只需要一次边缘检测即可。Laplacian算子是一种二阶导数算子,对噪声比较敏感,因此常需要配合高斯滤波一起使用。...

2021-06-15 15:07:08 4829

原创 OpenCV——边缘检测原理

边缘检测原理图像的边缘指的是图像中像素灰度值突然发生变化的区域,如果将图像的每一行像素和每一列像素都描述成一个关于灰度值的函数,那么图像的边缘对应在灰度值函数中是函数值突然变大的区域。函数值的变化趋势可以用函数的导数描述。当函数值突然变大时,导数也必然会变大,而函数值变化较为平缓区域,导数值也比较小,因此可以通过寻找导数值较大的区域去寻找函数中突然变化的区域,进而确定图像中的边缘位置。图5-27给出一张含有边缘的图像,图像每一行的像素灰度值变化可以用图中下方的曲线表示。通过像素灰度值曲线可以看出图像

2021-06-15 14:33:38 1641

原创 OpenCV——双边滤波

前面学习的一些滤波方法会是的图像边缘信息变弱或者消失,因此需要一种能够对图像边缘信息进行保留的滤波算法,双边滤波就是经典的常用的能够保留图像边缘信息的滤波算法之一。双边滤波是一种综合考虑滤波器内图像空域信息和滤波器内图像像素灰度值相似性的滤波算法,可以实现在保留区域信息的基础上实现对噪声的去除、对局部边缘的平滑。双边滤波对高频率的波动信号起到平滑的作用,同时保留大幅值的信号波动,进而实现对保留图像中边缘信息的作用。双边滤波的示意图如图5-24所示,双边滤波器是两个滤波器的结合,分别考虑空域信息和值域信息,使

2021-06-15 13:48:56 1597

原创 OpenCV——中值滤波

中值滤波就是用滤波器范围内所有像素值的中值来替代滤波器中心位置像素值的滤波方法,是一种基于排序统计理论的能够有效抑制噪声的非线性信号处理方法。中值滤波不依赖于滤波器内那些与典型值差别很大的值,因此对斑点噪声和椒盐噪声的处理具有较好的处理效果。...

2021-06-15 10:56:50 1377

原创 OpenCV——可分离滤波

自定义滤波无论是图像卷积还是滤波,在原图像上移动滤波器的过程中每一次的计算结果都不会影响到后面过程的计算结果,因此图像滤波是一个并行的算法,在可以提供并行计算的处理器中可以极大的加快图像滤波的处理速度。...

2021-06-15 10:40:52 896 1

原创 OpenCV——Mat reshape函数

Mat reshape(int cn, int rows=0) const;

2021-06-15 10:05:40 625 1

原创 OpenCV——高斯滤波

高斯滤波高斯滤波器是一类根据高斯函数的形状来选择权值的线性平滑滤波器。高斯平滑滤波器对于抑制服从正态分布的噪声非常有效。一维零均值高斯函数为:g(x)=exp(-x^2/(2sigma^2)

2021-06-11 16:51:09 5577 1

原创 OpenCV——方框滤波

boxFilter方框滤波是均值滤波的一般形式,在均值滤波中,将滤波器中所有的像素值求和后的平均值作为滤波后结果,方框滤波也是求滤波器内所有像素值的之和,但是方框滤波可以选择不进行归一化,就是将所有像素值的和作为滤波结果,而不是所有像素值的平均值。void boxFilter( InputArray src, OutputArray dst, int ddepth, Size ksize, Point anchor = Point(-1,.

2021-06-11 16:08:12 431

原创 OpenCV——均值滤波

均值滤波将滤波器内所有的像素值都看作中心像素值的测量,将滤波器内所有的像数值的平均值作为滤波器中心处图像像素值。滤波器内的每个数据表示对应的像素在决定中心像素值的过程中所占的权重,由于滤波器内所有的像素值在决定中心像素值的过程中占有相同的权重,因此滤波器内每个数据都相等。均值滤波的优点是在像素值变换趋势一致的情况下,可以将受噪声影响而突然变化的像素值修正到接近周围像素值变化的一致性下。但是这种滤波方式会缩小像素值之间的差距,使得细节信息变得更加模糊,滤波器范围越大,变模糊的效果越明显。...

2021-06-11 15:36:53 3365

原创 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 1508 1

原创 OpenCV——直方图比较

compareHistdouble compareHist( InputArray H1, InputArray H2, int method );

2021-06-10 18:14:54 537

原创 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 1736

原创 OpenCV——图像直方图

图像直方图是图像处理中非常重要的像素统计结果,图像直方图不再表征任何的图像纹理信息,而是对图像像素的统计。由于同一物体无论是旋转还是平移在图像中都具有相同的灰度值,因此直方图具有平移不变性、放缩不变性等优点,因此可以用来查看图像整体的变化形式,例如图像是否过暗、图像像素灰度值主要集中在哪些范围等,在特定的条件下也可以利用图像直方图进行图像的识别,例如对数字的识别。图像直方图简单来说就是统计图像中每个灰度值的个数,之后将图像灰度值作为横轴,以灰度值个数或者灰度值所占比率作为纵轴绘制的统计图。通过直方图可以

2021-06-10 15:19:38 394

原创 OpenCV——图像金字塔

图像金字塔:高斯金字塔、拉普拉斯金字塔高斯金字塔

2021-06-10 11:20:22 602

原创 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 353

原创 OpenCV——透视变换

透视变换是按照物体成像投影规律进行变换,即将物体重新投影到新的成像平面,示意图如图3-24所示。透视变换常用于机器人视觉导航研究中,由于相机视场与地面存在倾斜角使得物体成像产生畸变,通常通过透视变换实现对物体图像的校正。透视变换中,透视前的图像和透视后的图像之间的变换关系可以用一个3×3的变换矩阵表示,该矩阵可以通过两张图像中四个对应点的坐标求取,因此透视变换又称作“四点变换”。根据四个对应点求取变换矩阵的getPerspectiveTransform()函数和进行透视变换的warpPerspectiv

2021-06-10 09:54:25 1325

原创 OpenCV——仿射变换

getRotationMatrix2D()函数用于计算旋转矩阵和warpAffine()函数用于实现图像的仿射变换

2021-06-09 18:14:59 599

原创 OpenCV——图像二值化

OpenCV图像二值化提供了两种函数thresholddouble threshold( InputArray src, OutputArray dst, double thresh, double maxval, int type );

2021-06-09 16:13:33 2337

原创 OpenCV——计算图像均值和标准方差

计算图像均值计算图像每个通道的均值Scalar mean(InputArray src, InputArray mask = noArray());

2021-06-09 15:14:47 13708

原创 OpenCV——通道分离和合并

void split(const Mat& src, Mat* mvbegin);void split(InputArray m, OutputArrayOfArrays mv);

2021-06-09 14:37:39 714

原创 OpenCV——颜色空间转换

OpnenCV读取的颜色空间是 BGR 一般情况都需要转化为RGB可以通过OpenCV颜色空间转换函数cvtColor

2021-06-09 14:03:05 597

原创 OpenCV——保存图片和视频

保存图片 imwritebool cv :: imwrite(const String& filename,InputArray img,Const std::vector<int>& params = std::vector<int>())shi

2021-06-09 11:20:52 1477

原创 OpenCV——图像窗口namedWindow

图像窗口namedWindowvoid cv::namedWindow(const String & winname,int flags = WINDOW_AUTOSIZE)

2021-06-09 10:42:00 716

原创 OpenCV——图像读取

imreadcv::Mat cv::imread(const String & filename,int flags=IMREAD_COLOR)

2021-06-09 10:34:50 161

原创 OpenCV——Mat遍历的三种方法

Mat的存储方式

2021-06-09 10:26:14 3099

原创 OpenCV——读取视频 C++版

OpenCV读取视频 C++版//// Created by smallflyfly on 2021/6/8.//#include "opencv2/core.hpp"#include "opencv2/imgproc.hpp"#include "opencv2/highgui.hpp"#include "opencv2/videoio.hpp"#include <iostream>using namespace std;using namespace cv;

2021-06-08 18:18:23 2363

原创 OpenCV “but it set OpenCV_FOUND to FALSE so package “OpenCV“ is considered to be NOT FOUND.” 错误

今天WIN10 CLION cmake配置OpenCV 报“but it set OpenCV_FOUND to FALSE so package "OpenCV" is considered to be NOT FOUND.” 错误修正

2021-06-08 16:23:24 6686 7

原创 CUDA编程之矩阵乘法

cuda编程矩阵乘法刚学 所以来个简单例子a n*n X b n * na 的每一行 * b

2021-06-03 16:56:49 712

原创 CondaValueError: no package names supplied

这两天conda抽风了 打什么命令都是错误 卸了TensorFlow 好像好点了 但是conda update 就出错“CondaValueError: no package names supplied”

2021-06-03 15:43:23 2423

原创 CUDA编程之线程管理

当内核函数开始执行,如何组织GPU的线程就变成了最主要的问题了,我们必须明确,一个核函数只能有一个grid,一个grid可以有很多个块,每个块可以有很多的线程,这种分层的组织结构使得我们的并行过程更加自如灵活:...

2021-05-28 11:17:43 731

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除