
opencv
小白菜si
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
OpenCV的Gui特性
1 图片1.1 读入图像使用函数 cv2.imread() 读入图像。这幅图像应该在此程序的工作路径,或者给函数提供完整路径,第二个参数是要告诉函数应该如何读取这幅图片。• cv2.IMREAD_COLOR:读入一副彩色图像。图像的透明度会被忽略,这是默认参数。• cv2.IMREAD_GRAYSCALE:以灰度模式读入图像• cv2.IMREAD_UNCHANGED:读入一幅图像...原创 2019-04-08 11:25:45 · 227 阅读 · 0 评论 -
直方图
1.0 基本概念 什么是直方图呢?通过直方图你可以对整幅图像的灰度分布有一个整体的了解。直方图的 x 轴是灰度值(0 到 255),y 轴是图片中具有同一个灰度值的点的数目。 直方图其实就是对图像的另一种解释。一下图为例,通过直方图我们可以对图像的对比度,亮度,灰度分布等有一个直观的认识。几乎所有的图像处理软件都提供了直方图分析功能。 让我们来一起看看这幅图片和它...原创 2019-04-09 10:53:10 · 6173 阅读 · 0 评论 -
简单人脸检测
1.1 Haar特征分类器介绍Haar特征分类器就是一个XML文件,该文件中会描述人体各个部位的Haar特征值。包括人脸、眼睛、嘴唇等等。Haar特征分类器存放目录:D:\wsbSoft\Anaconda3\envs\tensorflow\Library\etc\haarcascades,根据命名就可以很快知道各个分类器的用途1.2detectMultiScale函数详解...原创 2019-04-11 20:21:01 · 778 阅读 · 1 评论 -
初识卷积
1.1 卷积定义 在图像处理中,卷积操作指的是使用一个卷积核对图像中的每个像素进行一系列操作。卷积核(算子)是用来做图像处理时的矩阵,图像处理时也称为掩膜,是与原图像做运算的参数。卷积核通常是一个四方形的网格结构(例如3*3的矩阵或像素区域),该区域上每个方格都有一个权重值。使用卷积进行计算时,需要将卷积核的中心放置在要计算的像素上,一次计算核中每个元...原创 2019-04-08 13:38:17 · 294 阅读 · 0 评论 -
图像轮廓
1.0 基本概念轮廓可以简单认为成将连续的点(连着边界)连在一起的曲线,具有相同的颜色或者灰度。轮廓在形状分析和物体的检测和识别中很有用。• 为了更加准确,要使用二值化图像。在寻找轮廓之前,要进行阈值化处理或者 Canny 边界检测。• 查找轮廓的函数会修改原始图像。如果你在找到轮廓之后还想使用原始图像的话,你应该将原始图像存储到其他变量中。• 在 OpenCV 中,查找轮廓就像在黑...原创 2019-04-08 11:23:56 · 1407 阅读 · 0 评论 -
图像金字塔
1.0 基本概念 一般情况下,我们要处理是一副具有固定分辨率的图像。但是有些情况下,我们需要对同一图像的不同分辨率的子图像进行处理。比如,我们要在一幅图像中查找某个目标,比如脸,我们不知道目标在图像中的尺寸大小。这种情况下,我们需要创建创建一组图像,这些图像是具有不同分辨率的原始图像。我们把这组图像叫做图像金字塔(简单来说就是同一图像的不同分辨率的子图合)。如果我们把最大的图像放在底部,...原创 2019-04-08 11:24:16 · 177 阅读 · 0 评论 -
Canny边缘检测
在 OpenCV 中只需要一个函数:cv2.Canny(),就可以完成以上几步。让我们看如何使用这个函数。这个函数的第一个参数是输入图像。第二和第三个分别是 minVal 和 maxVal。第三个参数设置用来计算图像梯度的 Sobel卷积核的大小,默认值为 3。最后一个参数是 L2gradient,它可以用来设定求梯度大小的方程。如果设为 True,就会使用我们上面提到过的方程,否则使用方程:代...原创 2019-04-08 11:24:36 · 947 阅读 · 1 评论 -
图像梯度
1.0 基本概念梯度简单来说就是求导。OpenCV 提供了三种不同的梯度滤波器,或者说高通滤波器:charr 和 Laplacian。我们会意义介绍他们。Sobel,Scharr 其实就是求一阶或二阶导数。Scharr 是对 Sobe小的卷积核求解求解梯度角度时)的优化。Laplacian 是求二阶1.1 Sobel算子Sobel 算子是高斯平滑与微分操作的结合体,所以它的抗噪声能力很...原创 2019-04-08 11:24:46 · 298 阅读 · 1 评论 -
形态学处理
1.0 基本概念形态学操作是根据图像形状进行的简单操作。一般情况下对二值化图像进行的操作。需要输入两个参数,一个是原始图像,第二个被称为结构化元素或核,它是用来决定操作的性质的。两个基本的形态学操作是腐蚀和膨胀。他们的变体构成了开运算,闭运算,梯度等。我们会以下图为例逐一介绍它们。1.1 腐蚀像土壤侵蚀一样,这个操作会把前景物体的边界腐蚀掉(但是前景仍然是白色)。这是怎么做到的呢?卷积...原创 2019-04-08 11:24:54 · 941 阅读 · 0 评论 -
图像平滑处理
1.0 基本概念2D 卷积与以为信号一样,我们也可以对 2D 图像实施低通滤波(LPF),高通滤波(HPF)等。LPF 帮助我们去除噪音,模糊图像。HPF 帮助我们找到图像的边缘OpenCV 提供的函数 cv.filter2D() 可以让我们对一幅图像进行卷积操作。下面我们将对一幅图像使用平均滤波器。下面是一个 5x5 的平均滤波器核:操作如下:将核放在图像的一个像素 A 上,求与核...原创 2019-04-08 11:25:01 · 3707 阅读 · 0 评论 -
图像阈值
1.1 阈值与名字一样,这种方法非常简单。但像素值高于阈值时,我们给这个像素赋予一个新值(可能是白色),否则我们给它赋予另外一种颜色(也许是黑色)。这个函数就是 cv2.threshhold()。这个函数的第一个参数就是原图像,原图像应该是灰度图。第二个参数就是用来对像素值进行分类的阈值。第三个参数就是当像素值高于(有时是小于)阈值时应该被赋予的新的像素值。OpenCV提供了多种不同的阈...原创 2019-04-08 11:25:09 · 1087 阅读 · 0 评论 -
图像的几何变换
1.1 图像缩放指定行列缩放b=cv2.resize(a,(200,100)) 200列、100行import cv2a=cv2.imread("..\\image\\lenacolor.png")b=cv2.resize(a,(200,100))#注意:第2个参数控制的是“列长度、行长度”,注意顺序。cv2.imshow("original",a)cv2.imshow...原创 2019-04-08 11:25:24 · 647 阅读 · 0 评论 -
图像的类型转换
1.1 BGR转换成GRAYcv2.cvtColor(a,cv2.COLOR_BGR2GRAY)import cv2a=cv2.imread("..\\image\\lenacolor.png")b=cv2.cvtColor(a,cv2.COLOR_BGR2GRAY)cv2.imshow("lenaColor",a)cv2.imshow("lenaGray",b)print(f...原创 2019-04-08 11:25:32 · 378 阅读 · 0 评论 -
图像的算术运算
1.1 图像加法你可以使用函数 cv2.add() 将两幅图像进行加法运算,当然也可以直接使用 numpy,res=img1+img。两幅图像的大小,类型必须一致,或者第二个图像可以使一个简单的标量值。图像的加法numpy中a+b[取余运算]opencv中cv2.add(a,b)区别[饱和运算]注意:OpenCV 中的加法与 Numpy 的加法是有所不同的。OpenCV 的加法是...原创 2019-04-08 11:25:39 · 1126 阅读 · 0 评论 -
图像的基础操作
1 图像的基础操作目标• 获取像素值并修改• 获取图像的属性(信息)• 图像的 ROI()• 图像通道的拆分及合并几乎所有这些操作与 Numpy 的关系都比与 OpenCV 的关系更加紧密,因此熟练 Numpy 可以帮助我们写出性能更好的代码。(示例将会在 Python 终端中展示,因为他们大部分都只有一行代码)1.1 获取并修改像素值处理灰度图像的实例:指定位置的像素都...原创 2019-04-08 11:26:29 · 678 阅读 · 0 评论 -
追踪指定颜色的物体
1.1 追踪蓝色物体# 【利用掩膜(mask)进行“与”操作】# 即掩膜图像白色区域是对需要处理图像像素的保留,黑色区域是对需要处理图像像素的剔除# 其余按位操作原理类似只是效果不同而已。# mask = cv2.inRange(img_HSV,lower_blue,upper_blue)# cv2.inRange()函数的原理:# |-所有不在此范围的像素点都处理成0(...原创 2019-04-09 21:16:21 · 1511 阅读 · 0 评论