随笔分类 -  Opencv-Python

1
摘要:全局线性变换的公式是s = (r-a)*(d-c)/(b-a)+c,其中a、b是原图片的灰度最小值和最大值,c、d是变换后的灰度值的最小值和最大值。r是当前像素点的灰度值,s是当前像素点变换后的灰度值。该公式可自己画出一个坐标,利用相似三角形性质可轻易得出。所以只要我... 阅读全文
posted @ 2018-10-14 13:18 龙~白 阅读(2598) 评论(0) 推荐(0)
摘要:参考Numpy 中的傅里叶变换 首先我们看看如何使用 Numpy 进行傅里叶变换。Numpy 中的 FFT 包可以帮助我们实现快速傅里叶变换。函数 np.fft.fft2() 可以对信号进行频率转换,输出结果是一个复杂的数组。本函数的第一个参数是输入图像,要求是... 阅读全文
posted @ 2018-08-06 10:00 龙~白 阅读(4677) 评论(0) 推荐(0)
摘要:直方图均衡化原理: 想象一下如果一副图像中的大多是像素点的像素值都集中在一个像素值范围之内会怎样呢?例如,如果一幅图片整体很亮,那所有的像素值应该都会很高。但是一副高质量的图像的像素值分布应该很广泛。所以你应该把它的直方图做一个横向拉伸(如下图),这就是直方图均衡... 阅读全文
posted @ 2018-08-04 21:03 龙~白 阅读(526) 评论(0) 推荐(0)
摘要:直方图概念 图像的构成是有像素点构成的,每个像素点的值代表着该点的颜色(灰度图或者彩色图)。所谓直方图就是对图像的中的这些像素点的值进行统计,得到一个统一的整体的灰度概念。一般情况下直方图都是灰度图像,直方图x轴是灰度值(一般0~255),y轴就是图像中每一个灰度... 阅读全文
posted @ 2018-08-02 22:49 龙~白 阅读(453) 评论(0) 推荐(0)
摘要:凸缺陷 前面我们已经学习了轮廓的凸包,对象上的任何凹陷都被成为凸缺陷。OpenCV 中有一个函数 cv.convexityDefect() 可以帮助我们找到凸缺陷。函数调用如下:hull = cv2.convexHull(cnt,returnPoints = Fal... 阅读全文
posted @ 2018-08-01 22:54 龙~白 阅读(559) 评论(0) 推荐(0)
摘要:边界矩形的宽高比x,y,w,h = cv2.boundingRect(cnt)aspect_ratio = float(w)/hExtentExtent就是轮廓面积与边界矩形面积的比。area = cv2.contourArea(cnt)x,y,w,h = cv2.b... 阅读全文
posted @ 2018-08-01 16:23 龙~白 阅读(412) 评论(0) 推荐(0)
摘要:什么是轮廓? 轮廓可以简单认为成连续的点(连着边界)连在一起的曲线,具有相同的颜色或者灰度。轮廓在形状分析和物体的检测和识别中很有用。谈起轮廓不免想到边缘,它们确实很像。简单的说,轮廓是连续的,边缘并不全都连续(下图)。其实边缘主要是作为图像的特征使用,比如可以用边... 阅读全文
posted @ 2018-08-01 08:56 龙~白 阅读(769) 评论(0) 推荐(0)
摘要:参考文献目标学习图像金字塔 学习函数cv2.pyrUp()和cv2.pyrDown()原理 当我们需要将图像转换到另一个尺寸的时候, 有两种可能,一种是放大图像,另一种是缩小图像。尽管在Opencv几何变换中学到了resize()函数,不过使用图像金字塔来做图像缩放... 阅读全文
posted @ 2018-07-30 21:17 龙~白 阅读(266) 评论(0) 推荐(0)
摘要:简介 Canny 边缘检测算法 是 John F. Canny 于 1986年开发出来的一个多级边缘检测算法,也被很多人认为是边缘检测的 最优算法,它是由很多步构成的算法。最优边缘检测的三个主要评价标准:低错误率: 标识出尽可能多的实际边缘,同时尽可能的减少噪声产生... 阅读全文
posted @ 2018-07-30 09:48 龙~白 阅读(640) 评论(0) 推荐(0)
摘要:目标认识图像梯度、边界 学习函数cv2.Sobel(),cv2.Schar(),cv2.Laplacian()原理 图像梯度可以把图像看成二维离散函数,图像梯度其实就是这个二维离散函数的求导。OpenCV提供三种类型的梯度滤波器或高通滤波器,Sobel,Scharr... 阅读全文
posted @ 2018-07-29 21:13 龙~白 阅读(695) 评论(0) 推荐(0)
摘要:学习目标:学习不同的形态学操作,例如腐蚀,膨胀,开运算,闭运算等我们要学习的函数有: cv2.erode(), cv2.dilate(), cv2.morphologyEx()等原理简介: 形态学操作是根据图像形状进行的简单操作。一般情况下对二值化图像进... 阅读全文
posted @ 2018-07-14 22:04 龙~白 阅读(453) 评论(0) 推荐(0)
摘要:学习目标:使用自定义的滤波器对图像进行卷积(2D 卷积)学习使用不同的低通滤波器对图像进行模糊一、2D卷积 卷积不是很了解的可以看我上一篇博客,与语音信号一样,我们也可以对 2D 图像实施低通滤波(LPF),高通滤波(HPF)等。低通滤波器就是允许低频信... 阅读全文
posted @ 2018-07-13 21:26 龙~白 阅读(372) 评论(0) 推荐(0)
摘要:卷积 什么是二维卷积呢?看下面一张图就一目了然: 卷积就是循环对图像跟一个核逐个元素相乘再求和得到另外一副图像的操作,比如结果图中第一个元素5是怎么算的呢?原图中3×3的区域与3×3的核逐个元素相乘再相加:1×1 + 2×0 + 1×0 +... 阅读全文
posted @ 2018-07-13 20:41 龙~白 阅读(271) 评论(0) 推荐(0)
摘要:学习目标:学习简单阈值,自适应阈值,Otsu’s 二值化等学习函数cv2.threshold,cv2.adaptiveThreshold 等。一、简单阈值 与名字一样,这种方法非常简单。但像素值高于阈值时,我们给这个像素赋予一个新值(可能是白色),否则我... 阅读全文
posted @ 2018-07-12 20:08 龙~白 阅读(305) 评论(0) 推荐(0)
摘要:学习目标:学习图像上的算术运算,加法,减法,位运算等。学习函数cv2.add(),cv2.addWeighted() 等。一、图像的加法 你可以使用函数 cv2.add() 将两幅图像进行加法运算,当然也可以直接使用 numpy,res=img1+img... 阅读全文
posted @ 2018-07-12 09:08 龙~白 阅读(263) 评论(0) 推荐(0)
摘要:一、获取矩阵的元素1、获取三维矩阵img[i,j]处的元素 (b,g,r) = image[i,j],image大小为:MxNxK。2、获取三维矩阵的子矩阵的全部元素 newimage = image[i:j,p:q],image大小为:M... 阅读全文
posted @ 2018-07-11 20:28 龙~白 阅读(156) 评论(0) 推荐(0)
摘要:学习目标:学会把滑动条绑定到 OpenCV 的窗口。学习函数:cv2.getTrackbarPos(), cv2.creatTrackbar()等。简单演示: 通过调节滑动条来设定画板颜色。我们要创建一个窗口来显示显色,还有三个滑动条来设置 B,G,R ... 阅读全文
posted @ 2018-07-11 18:54 龙~白 阅读(441) 评论(0) 推荐(0)
摘要:学习目标: 学习使用 OpenCV 处理鼠标事件学会使用函数cv2.setMouseCallback()简单演示: 首先我们来创建一个鼠标事件回调函数,但鼠标事件发生是他就会被执行。鼠标事件可以是鼠标上的任何动作,比如左键按下,左键松开,左键双击等。该函... 阅读全文
posted @ 2018-07-11 10:48 龙~白 阅读(517) 评论(0) 推荐(0)
摘要:常用的绘图函数有:cv2.line() cv2.circle() cv2.rectangle() cv2.ellipse() cv2.putText()上面所有的这些绘图函数需要设置下面这些参数:• img:你想要绘制图... 阅读全文
posted @ 2018-07-10 19:34 龙~白 阅读(905) 评论(0) 推荐(0)
摘要:一、利用摄像头获取视频 我们经常需要使用摄像头捕获实时图像。OpenCV 为这中应用提供了一个非常简单的接口。让我们使用摄像头来捕获一段视频,并把它转换成灰度视频显示出来。了获取视频,你应该创建一个 VideoCapture 对象。他的参数可以是设备的索... 阅读全文
posted @ 2018-07-10 09:13 龙~白 阅读(482) 评论(0) 推荐(0)

1