自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(25)
  • 收藏
  • 关注

原创 23. 验证码识别

1. 搭建环境pytesseract库的安装: pip install pytesseract tesseract-ocr的安装:https://blog.csdn.net/qq_37193537/article/details/81335165可能遇到的问题:raise TesseractNotFoundError() pytesseract.pytesseract.TesseractNotFoundError: tesseract is not installed or it's not in.

2020-12-30 16:06:27 173

原创 22. 三种特征分类器-Harr、LBP、HOG

最常用到的三种特征分别为Haar特征、LBP特征及HOG特征,三种特征描述了三种不同的局部信息: Haar描述的是图像在局部范围内像素值明暗变换信息; LBP描述的是图像在局部范围内对应的纹理信息; HOG描述的则是图像在局部范围内对应的形状边缘梯度信息。 1. HarrHaar 级联检测器,OpenCV 中的 Haar 级联检测器支持人脸检测、微笑、眼睛与嘴巴检测等,通过加载这些预先训练的 Haar 模型数据可以实现相关的对象检测。Haar特征值反映了图像的对比度与梯度变

2020-12-30 15:13:34 1325

原创 21. 基于距离变换的分水岭算法

1. 原理任何一副灰度图像都可以被看成拓扑平面,灰度值高的区域可以被看成是 山峰,灰度值低的区域可以被看成是山谷。我们向每一个山谷中灌不同颜色的水。随着水的位的升高,不同山谷的水就会相遇汇合,为了防止不同山谷的水 汇合,我们需要在水汇合的地方构建起堤坝。不停的灌水,不停的构建堤坝直到所有的山峰都被水淹没。我们构建好的堤坝就是对图像的分割。这就是分水岭算法的背后哲理。但是这种方法通常都会得到过度分割的结果,这是由噪声或者图像中其他不规律的因素造成的。为了减少这种影响,OpenCV 采用了基于掩模的分水岭算

2020-12-30 11:28:23 1768

原创 20. 图像的形态学操作-腐蚀、膨胀、开运算、闭运算、顶帽和黑帽、形态学梯度

1. 形态学操作形态学操作其实就是改变物体的形状,比如腐蚀就是”变瘦”,膨胀就是”变胖”。形态学操作一般作用于二值图,来连接相邻的元素或分离成独立的元素。2. 图像的腐蚀和膨胀2.1 腐蚀(erode)-cv2.erode()腐蚀和膨胀是相反的操作,腐蚀是求局部最小值的操作。腐蚀操作会使图像中的高亮区逐渐减小。 原图 ...

2020-12-30 08:55:53 1149

原创 19. 对象测量

1. opencv 中轮廓特征包括:面积,周长,质心,边界框等 弧长与面积测量 多边形拟合 获取轮廓的多边形拟合结果2. python-opencv API提供方法:cv2.moments()用来计算图像中的中心矩(最高到三阶),会将计算得到的的矩以一个字典的形式返回; cv2.HuMoments()用于由中心矩计算Hu矩; cv2.contourArea()函数计算轮廓面积; 参数有2个: 1. 轮廓 2. 来指定对象的形状是闭合的(True),还是打开的(一条曲线) x, y,.

2020-12-29 15:41:02 226 4

原创 18. 轮廓发现-cv2.findContours()、cv2.drawContours()

1. 定义轮廓发现是基于图像边缘提取的基础寻找对象轮廓的方法,所以边缘提取的阈值会影响最终轮廓发现的结果。轮廓可以简单认为成将连续的点(连着边界)连在一起的曲线,具有相同 的颜色或者灰度。轮廓在形状分析和物体的检测和识别中很有用。 为了更加准确,要使用二值化图像。在寻找轮廓之前,要进行阈值化处理或者 Canny 边界检测,查找轮廓的函数会修改原始图像。如果你在找到轮廓之后还想使用原始图像的话,你应该将原始图像存储到其他变量中.在 OpenCV 中,查找轮廓就像在黑色背景中寻找白色物体...

2020-12-29 10:52:22 599

原创 17. 直线检测、圆检测-hough变换

1.概述Hough 变换(Hough Transform , HT)是由 Paul Hough 在 1962 年提出,通过将图像坐标变换到参数空间,来实现直线的拟合。其利用点和线之间的对偶特性,将图像坐标中的像素点通过空间转换关系变换到参数空间坐标系中。图像空间中一条直线上的所有点映射到参数空间中对应一个峰值点,通过统计参数空间中峰值点的坐标来代替图像中直线检测问题。2. 原理霍夫变换(Hough Transform)是图像处理中的一种特征提取技术,它通过一种投票算法检测具有特定形状的物体。该过

2020-12-28 20:53:47 1522

原创 16. 边缘检测算子-sobel、canny、Laplacian等

边缘检测是图像处理和计算机视觉中,尤其是特征提取中的一个研究领域。图像边缘检测大幅度的减少了数据量,并且剔除了可以认为不相关的信息,保留了图像重要的结构属性。边缘检测,就是找到原始图像中画面出现跳变的地方。这里的跳变,可以理解为相邻像素的像素值出现了较大的变化,而梯度方向为灰度最大变化率的方向(求导解决)。  在实际的图像分割中,往往只用到一阶和二阶导数,虽然原理上,可以用更高阶的导数,但是因为噪声的影响,在纯粹二阶的导数操作中就会出现对噪声的敏感现象,三阶以上的导数信息往往失去了应用价值。二阶导数还可

2020-12-28 19:45:08 7196

原创 15. 图像金字塔-高斯金字塔、拉普拉斯金字塔、DOG金字塔

1. 什么是图像金字塔图像金字塔是图像处理和计算机视觉中常用到的概念,常常用于多尺度处理领域(multiscale processing),尤其早年的图像匹配、识别、图像分割等算法中都用到了图像金字塔。一幅图像的金字塔是一系列以金字塔形状排列的分辨率逐步降低,且来源于同一张原始图的图像集合。其通过梯次向下采样获得,直到达到某个终止条件才停止采样。金字塔的底部是待处理图像的高分辨率表示,而顶部是低分辨率的表示。我们将一层一层的图像比喻成金字塔,层级越高,则图像越小,分辨率越低。2. 图像金字塔的分类.

2020-12-28 16:04:56 1640

原创 14. 图像的二值化-cv2.threshold()、cv2.adaptiveThreshold()

1. 什么是图像的二值化 将图像上的像素点的灰度值设置为0或255,也就是将整个图像呈现出明显的黑白效果的过程。 图像的二值化使图像中数据量大为减少,从而能凸显出目标的轮廓。2. 实现函数- cv2.threshold()、cv2.adaptiveThreshold()2.1 全局阈值-cv2.threshold()参数如下:cv2.threshold(src, thresh, maxval, type) 参数说明: 1. src 源图像,必须是单通道 2. thr...

2020-12-28 14:26:36 558

原创 13. 模板匹配-cv2.matchTemplate()、cv2.minMaxLoc()

1. 什么是模板匹配模板匹配,就是在整个图像区域发现与给定子图像匹配的小块区域,需要模板图像T和待检测图像-源图像S。 工作方法:在待检测的图像上,从左到右,从上倒下计算模板图像与重叠子图像匹配度,匹配度越大,两者相同的可能性越大。2. 实现函数-cv2.matchTemplate()、cv2.minMaxLoc()2.1cv2.matchTemplate()-模板匹配参数如下:cv2.matchTemplate(image, templ, method, result=No...

2020-12-28 10:40:10 2008 1

原创 12. 直方图反向投影

1. 什么是反向投影反向投影就是首先计算某一特征的直方图模型,然后使用模型去寻找图像中存在的特征。更通俗一点,反向投影可以通过颜色直方图来理解,我们检测图像中某个像素点的颜色是否位于直方图中,如果位于则将颜色加亮,通过对图像的检测,得出结果图像,结果图像一定和直方图像匹配。那么对于图像颜色的取样点越多,越能更好的找出目标图形。这里直方图的作用在于提供一个比较标准(也就是模版),即对于要检测的图像来说,需要给它提供一个模版,用于识别出和模版相应的特征。2. 原理要理解直方图的反向投影,先要看下直方

2020-12-28 10:05:19 1214 1

原创 11. 直方图cv2.calcHist()、直方图均衡化cv2.equalizeHist(gray)、cv2.createCLAHE()、直方图比较cv2.compareHist()

1. 直方图直方图是对数据的统计集合,并将统计结果分布于一系列预定义的 bins 中。这里的数据不仅仅指的是灰度值,且统计数据可能是任何有效描述图像的特征。

2020-12-26 15:23:11 2782

原创 10. 边缘保留滤波EPF-cv2.bilateralFilter()、cv2.pyrMeanShiftFiltering()

1. 什么是EPF?  高斯模糊: 基于权重,权重只考虑像素空间的分布,中间的权重大,边缘的权重小。没有考虑像素值之间的差异问题,没有考虑边缘。  边缘保留滤波: 像素之间的差异很大,说明是显著特征,如果直接平滑(滤波),显著特征会消失。像素之间差异大的地方通常是边缘,所以边缘保留滤波处理后的图片,在平滑(滤波)的情况下,依旧能够保留图像的边缘.。2. 实现方式:2.1 高斯双边滤波-cv2.bilateralFilter双边滤波是一种非线性的滤波方法,是结合图像的空间邻近度和像素值..

2020-12-25 19:52:40 1860

原创 9. 图像去噪-cv2.blur()、cv2.medianBlur()、cv2.filter2D()、cv2.GuassianBlur()

1. 什么是图像去噪?图像去噪是指减少数字图像中噪声的过程.2. 去噪方法2.1 均值滤波均值滤波也称为线性滤波,其采用的主要方法为邻域平均法。线性滤波的基本原理是用均值代替原图像中的各个像素值,即对待处理的当前像素点(x,y),选择一个模板,该模板由其近邻的若干像素组成,求模板中所有像素的均值,再把该均值赋予当前像素点(x,y),作为处理后图像在该点上的灰度g(x,y),即g(x,y)=1/m ∑f(x,y) m为该模板中包含当前像素在内的像素总个数。函数实现:cv2.blur(img

2020-12-25 16:46:12 2098

原创 8. 感兴趣区域提取ROI、泛洪填充cv2.floodFill()

1. ROI-感兴趣区域提取ROI(region of interest),感兴趣区域,从被处理的图像以方框、圆、椭圆、不规则多边形等方式勾勒出需要处理的区域,称为感兴趣区域,经常用来连接图像。代码如下:def roi_test(src): face = src[100:510, 200:600] # 高度,宽度. gray = cv.cvtColor(face, cv.COLOR_BGR2GRAY) # face彩色图片变成灰度图片 cv.imshow("gray

2020-12-25 14:43:02 713

原创 7. 图像的几何变换-cv2.resize()、cv2.warpAffine()、cv2.getRotationMatrix2D()、cv2.getAffineTransform()、透视变换

1. 改变图像的大小-cv2.resize()函数原型:cv2.resize(src, dst, Size, fx, fy, interpolation)参数说明:1. src 输入图片 2. dst 输出图片 3.size 输出图片的大小 4. fx、fy:沿水平轴、垂直轴的缩放因子(宽度、高度) 5.插入方式,默认为INTER_LINEAR.插入方式interpolation有以下几种: INTER_NEAREST 最近邻插值 INTER.

2020-12-25 10:36:07 1008

原创 6.像素运算-算术运算和逻辑运算

1. 算术运算俩张图片进行算术运算的前提是俩张图片的大小是一样的。1.1 cv2.add(src1, src2, dst=None, mask=None, dtype=None)参数说明:src1, src2:需要相加的两副大小和通道数相等的图像或一副图像和一个标量(标量即单一的数值) dst:可选参数,输出结果保存的变量,默认值为None,如果为非None,输出图像保存到dst对应实参中,其大小和通道数与输入图像相同,图像的深度(即图像像素的位数)由dtype参数或输入图像确认 mas

2020-12-24 20:27:42 669 1

原创 5. 色彩空间-RGB、HSV,HIS、cv2.inRange()、cv2.split()、cv2.merge()

1. 颜色空间转换RGB(地球人都知道)RGB 是我们接触最多的颜色空间,由三个通道表示一幅图像,分别为红色(R),绿色(G)和蓝色(B)。这三种颜色的不同组合可以形成几乎所有的其他颜色。自然环境下获取的图像容易受自然光照、遮挡和阴影等情况的影响,即对亮度比较敏感。而 RGB 颜色空间的三个分量都与亮度密切相关,即只要亮度改变,三个分量都会随之相应地改变,而没有一种更直观的方式来表达。但是人眼对于这三种颜色分量的敏感程度是不一样的,在单色中,人眼对红色最不敏感,蓝色最敏感,所以 RGB 颜色空间是一种

2020-12-24 16:54:57 3225

原创 4. img.shape[:]、获取程序的执行的时间、图像的初始化和cv2.bitwise_not()

1.获取图像的高、宽、通道数height = image.shape[0]width = image.shape[1]channels = image.shape[2]# 也可以直接写成:height, width, channels = image.shape[:]2.计算程序的执行时间-cv2.getTickCount()、cv2.getTickFrequency()cv2.getTickCount() 作用:用于返回从操作系统启动到当前所经的计时周期数. cv2.getTi.

2020-12-24 14:53:36 607

原创 3.绘图函数cv2.line()、cv2.circle()、cv2.rectangle()、cv2.ellipse()、cv2.putText()、cv2.polylines

1. cv2.line()-画线条它有五个参数:  img:要划的线所在的图像;   pt1:直线起点   pt2:直线终点 (坐标分别为宽、高,opencv中图像的坐标原点在左上角)  color:直线的颜色  thickness=1:线条粗细,默认是1.如果一个闭合图形设置为-1,那么整个图形就会被填充。 2. cv2.circle()-画圆和cv2.line()大致相同,第2、3个参数分别代表圆的圆心坐标和半径.3. cv2.rectangle()-画矩形和..

2020-12-22 19:56:02 12086 5

原创 anaconda的安装

1. anacond下载1) 官网下载:https://www.anaconda.com/ Products-->individual edition-->download (下载速度慢,不推荐)2) 使用镜像源下载:如: https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/ (清华镜像源)2. 常用的软件源默认的pip的源:https://pypi.python.org/simple国内知名...

2020-12-18 16:18:56 60 1

原创 模型结构可视化工具-Netron

今天在将tensorflow保存的checkpoint类型模型冻结,转化为.pb模型输出后,想要打开.pb文件,但是找不到合适的工具,偶然间看到一篇博客,里面介绍的模型结构可视化工具-Netron 可以打开此类型。netron介绍和安装安装包:https://github.com/lutzroeder/netron/releases/tag/v4.6.6使用方法:打开Netron,点 open model 即可添加你所要打开的模型结构...

2020-12-18 15:54:42 589

原创 2. 图像和视频的读写和保存

1. cv2.imread()它是用来读取图像的,它有俩个参数: 1. 图片路径 2. 读取图片的形式,它只能是以下三个值之一:cv2.IMREAD_COLOR:加载彩色图片,这个是默认参数,可用1代替,忽视透明度。 cv2.IMREAD_GRAYSCALE:以灰度模式加载图片,用0代替。 cv2.IMREAD_UNCHANGED:包括alpha通道,-1注:alpha通道就是图片的透明度和半透明度。返回的类型numpy.ndarray格式,也就是多维数组形式,形式为 h * w * c

2020-12-17 16:26:13 387 1

原创 1.opencv的安装

1.简介Opencv(Open Source Computer Vision Library)是一个基于开源发行的跨平台计算机视觉库,它实现了图像处理和计算机视觉方面的很多通用算法,已成为计算机视觉领域最有力的研究工具。在这里我们要区分两个概念:图像处理和计算机视觉的区别:图像处理侧重于“处理”图像--如增强,还原,去噪,分割等等;而计算机视觉重点在于使用计算机来模拟人的视觉,因此模拟才是计算机视觉领域的最终目标。Opencv由一系列C函数和C++类构成,拥有包括500多个C函数的跨平台的中高层AP

2020-12-16 16:20:07 599

空空如也

空空如也

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

TA关注的人

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