欢迎光临散文网 会员登陆 & 注册

基于Python的Opencv入门教程(P4.让我们旋转我们的图片)

2022-01-15 16:53 作者:闲予1217  | 我要投稿

书接上文(doge)


旋转图像

让我们旋转图像,以获得下一个示例:

围绕中心点旋转图像需要首先计算图像的中心(x,y)-坐标(第50行)。

注意:我们使用//执行整数数学(即,没有浮点值)。

从这里我们计算旋转矩阵M(第43行)。45表示我们将图像顺时针旋转45度。回想一下中学/高中几何课上关于单位圆的内容,你可以提醒自己,正角度是逆时针方向,负角度是顺时针方向。

从那里,我们使用第44行的矩阵扭曲图像(有效地旋转它)。

旋转后的图像显示在第44行的屏幕上,如下图所示:

使用OpenCV围绕中心点旋转图像需要三个步骤:(1)使用图像宽度和高度计算中心点,(2)(2) 计算一个旋转矩阵和 CV2.getShenTeng2D,(3)使用旋转矩阵扭曲带有CV2的图像。翘曲的。

现在,让我们使用imutils在一行代码中执行相同的操作:

由于我不必像调整大小那样旋转图像(相对而言),我发现旋转过程更难记住。因此,我在imutils中创建了一个函数来为我们处理它。在一行代码中,我可以将图像顺时针旋转45度(第49行),如下图所示:

用imutils.rotate,我们可以使用OpenCV和Python通过一行代码方便地旋转图像。

此时,你必须思考:

“究竟为什么要剪掉这张照片?”

答案是因为OpenCV不在乎旋转后我们的图像是否被剪掉或看不见。我觉得这很麻烦,所以这里是我的imutils版本,它将保持整个图像在视图中。我称之为旋转约束:

这里因为图片大小过于大,所以将图片进行了缩小。(指第54行的代码)

这个算法的幕后有很多事情。如果您对第54行的方法的工作方式感兴趣,请务必查看以下博网址。

https://www.pyimagesearch.com/2017/01/02/rotate-images-correctly-with-opencv-and-python/?_ga=2.102176713.919642978.1642226886-1706104520.1639213599

(次文章还未翻译)

结果如下图所示:

imutils的rotate_bound函数将阻止OpenCV在旋转期间剪裁图像。查看此博客文章了解其工作原理!

https://pyimagesearch.com/2017/01/02/rotate-images-correctly-with-opencv-and-python/?_ga=2.262150340.919642978.1642226886-1706104520.1639213599

完美!整个图像位于框架中,并正确地顺时针旋转45度了!

虚化一张图片

在许多图像处理管道中,我们必须模糊图像以减少杂讯,使我们的算法更容易检测和理解图像的实际内容,而不仅仅是会“混淆”我们的算法的讯息。在OpenCV中,模糊图像非常容易,有多种方法可以实现。


该图像使用OpenCV进行了高斯模糊处理,内核为21 x 21。模糊是许多图像处理管道中减少高频噪声的重要步骤。

我经常使用Gaussian模糊函数(高斯模糊函数):

在第70行,我们使用21 x 21内核执行高斯模糊,其结果如图上所示。

更大的核会产生更模糊的图像。较小的内核将创建较少模糊的图像。要了解更多关于内核的信息,请参阅本文或PyImageSearch专家课程。

另外,“内核”的数值一定要是基数呦~

那么,今天就写到这里了,拜拜。

话说下一次就可以再图上画画了呢!(十分小声)


基于Python的Opencv入门教程(P4.让我们旋转我们的图片)的评论 (共 条)

分享到微博请遵守国家法律