最近打算学习opencv,但是还未开始就被一道难关卡住了。安装opencv包,上次安装pygame包安了两天,因此我非常打怵。 经过一天的搏斗,走了很多弯路,终于!我安装成功了!于是便打算总结一套无敌的方法!!!让大家少走弯路。以下的步骤有的可能用不到,但是还是建议都做,不怎么费事,而且以后用到的时候你就会发现很便利。 步骤一:换源 如果你的anaconoda没有换源,建议换源,换成清华的源或者中...

在这一章将要学习图像的移动、旋转,仿射变换等 扩展缩放 我们如果想要改变图像的大小,我们就需要对图像进行扩展缩放,opencv提供给我们控制扩展缩放的函数: 参数解释: src:进行扩展缩放的原图片 dst:可以在此处设置缩放因子,也可手动设置尺寸 interpolation:在缩放时我们推荐使用cv2.INTER_AREA, 在扩展时我们推荐使用cv2.INTER_CUBIC(慢) 和 cv2....

阈值二值化 灰度图的阈值范围(0–255),0是纯黑色,255是纯白色。越靠近0越黑。 在opencv中,我们使用如下函数实现固定阈值二值化 src:表示输入图像,注意只能是灰度图 thresh:表示要设置的阈值,也是整个函数最关键的参数。 maxval当像素值超过阈值或小于阈值(具体根据type来决定)时所赋予的值。 type:二值化操作的类型: THRESH_BINARY(超过阈值...

我发现只要多于两种颜色识别起来误差就极大极大,等以后学到会回来进行优化的。目前识别两种颜色还是比较稳的。 别问为什么就截一部分,问就是用嘴咬着手机识别的。...

本章将学习一些去除噪声的方法。 对以后进行图像识别等操作很有意义。 均值滤波 道理不咋懂,直接放函数好了 size为卷积核尺寸 高斯模糊 把卷积核换成高斯核。(简单来说,方框不变,将原来每个方框的值是 相等的,现在里面的值是符合高斯分布的,方框中心的值最大,其余方框根据 距离中心元素的距离递减,构成一个高斯小山包。原来的求平均数现在变成求 加权平均数,全就是方框里的值)。实现的函数是 cv2.Ga...

Laplacian算子也是计算图像梯度的一个利器。它相当于二阶Sobel算子的导数。咋来的不再从这里做解释,我们知道怎么用就行了。 Laplacian算子的卷积核是这样的: 其构造函数如下: src:原图 ddepth:返回图像的深度。由于在计算梯度时湖出现负数,所以我们选择范围更大的cv2.CV_64F。如果选择-1,即与原图相同,负数就会被归为0导致有边出不来。 在使用完这个函数之后别忘了处理...

scharr算子实际上是sobel算子的优化,scharr算子在处理边缘时比sobel精度高一些。两种算子唯一的区别就是他们的卷积核不同,他们无论在计算时间还是复杂度都是一样的。 容易看出两种算子卷积核的差异。 opencv中提供给我们scharr算子的函数: 参数解释同sobel,不清楚的请移步OpenCV之sobel算子详解 但是我们既然说scharr算子是sobel算子的优化,我们当然也可以...

闲着没事在网上找美颜的例子,还真叫我找到了,然后自己就写了很丑很简单的一个小界面,可以实现人脸的磨皮和美白,效果还算不错。美颜部分代码是借鉴的大神的。 meiyan.py untitled.py 其实这个还可以加比如涂口红之类的,等我研究研究在更新代码。...

一、掩码操作          矩阵的掩码操作很简单。其思想是:根据掩码矩阵(也称作核)重新计算图像中每个像素的值。掩码矩阵中的值表示近邻像素值(包括该像素自身的值)对新像素值有多大影响。从数学观点看,我们用自己设置的权值,对像素邻域内的值做了个加权平均。 二、操作实践 2.1 基于像素邻域的掩码操作 2.2 系统函数方式 &n...

一、 图像在内存中存储方式 图像矩阵的大小取决于我们所用的颜色模型,确切地说,取决于所用通道数。如果是灰度图像,矩阵就会像这样: 而对多通道图像来说,矩阵中的列会包含多个子列,其子列个数与通道数相等。例如,RGB颜色模型的矩阵: 注意到,子列的通道顺序是反过来的:BGR而不是RGB。很多情况下,因为内存足够大,可实现连续存储,因此,图像中的各行就能一行一行地连接起来,形成一个长行。连续存...

需要工具包:numpy,cv2,dlib dlib在做人脸识别方面非常好用,我们使用dlib提供的现成的训练集来对模型进行训练。 网盘链接 提取码:rn0n 如果对dlib工具包安装有问题的,请移步win10 64 位系统python3.7 安装dlib包 对opencv工具包安装有问题的,请移步小白安装opencv-python 我爱热巴...

在findContours()函数中,我们一共返回了三个参数:image,contours,hierarchy。其中image代表的是修改之后的原图,contours代表的是轮廓,hierarchy代表的是轮廓的层次结构。我们主要来讨论一下第二个返回值:contours。以及轮廓可以进行的一些操作。 contours contours代表的是找到的轮廓,它是一个numpy中的列表结构,那么接下来就...

有的人可能会问,轮廓跟边缘有什么区别,不都是把物体的边缘画出来吗。实际上是不一样的,边缘一般是不连续的,而轮廓则是把边缘连接成了一个整体。 cv2.findContours() 这个函数是用来查找图像的轮廓,并且返回几个值。其构造函数如下: 参数解释: image:修改后的原图像 contours:是一个列表,储存图像中的所有轮廓,包含对象边界点坐标(x,y) hierarchy:图像的轮廓层次 ...