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

基于Python的Opencv入门教程(P5.让我们在图片上画画)

2022-01-20 23:03 作者:闲予1217  | 我要投稿

书接上文(doge)

在本节中,我们将在输入图像上绘制矩形、圆形和直线。我们还将在图像上覆盖文本。

在继续使用OpenCV在图像上绘制之前,请注意图像上的绘制操作是在适当的位置执行的。因此,在每个代码块的开头,我们制作一个原始图像的副本,将副本存储为输出。然后我们继续绘制名为“输出到位”的图像,这样我们就不会破坏原始图像。

那让我们开始吧!

框出

让我们围绕掌门的脸画一个矩形:

首先,出于刚才解释的原因,我们在第65行复制了一份图像。

然后我们继续画矩形。

在OpenCV中绘制矩形再简单不过了。使用预先计算的坐标,我为CV2提供了以下参数。第66行的矩形函数:

img:要绘制的目标图像。我们将他绘制在我们所要输出的图片上。

pt1:我们的起始像素坐标是左上角。在我们的例子中,左上角是(430, 40)。

pt2:结束像素-右下角。右下像素位于(800, 450)。

颜色:BGR元组。为了表示红色,我提供了(0,025)。

厚度:线条厚度(负值将形成实心矩形)。我已经提供了2的厚度。

因为我们使用的是OpenCV的函数而不是NumPy操作,所以我们可以按(x,y)顺序而不是(y,x)顺序提供坐标,因为我们没有直接操作或访问NumPy数组-OpenCV为我们处理这些。

程序运行的结果如下图所示⬇⬇⬇

使用OpenCV和Python绘制形状是一项很容易掌握的技能。在这张图中,我使用CV2绘制了一个红色框。长方形在本例中,我预先确定了人脸周围的坐标,但您可以使用人脸检测方法自动查找人脸坐标。

现在让我们在掌门的脸前画一个蓝色的圆圈:

要绘制圆,需要向CV2提供以下参数。圆圈:

img:输出图像。

center:圆的中心坐标。我提供的(615, 245)就在掌门的脸上。

radius:以像素为单位的圆半径。我提供了一个20像素的值。

color:圆形颜色。这一次我使用了蓝色,在BGR元组的B和G+R组件中分别用255和0表示(255,0,0)。

厚度:线条的厚度。因为我提供了一个负值(-1),所以圆是实心的/被填充的。

程序运行的结果如下图所示⬇⬇⬇

OpenCV的CV2.circle方法允许您在图像上的任意位置绘制圆。我已经为这个例子画了一个实心圆,由-1线厚度参数表示(正值将生成具有可变线厚度的圆形轮廓)。

让我们继续吧!

接下来,我们将画一条红线。这条线穿过掌门的头,穿过他的脸,到达他的手。

如果仔细查看方法参数并将其与矩形参数进行比较,您会注意到它们是相同的:

就像在矩形中一样,我们提供两个点、一种颜色和一条线的厚度。OpenCV的后端完成了其余的工作。

图13显示了代码块第78行的结果:

与绘制矩形和圆形类似,使用CV2在OpenCV中绘制直线。线条只需要起点、终点、颜色和厚度。

通常,您会发现,为了显示的目的,您需要在图像上覆盖文本。如果你在做人脸识别的工作,你可能会想把这个人的名字画在他们的脸上。或者,如果你在计算机视觉职业上取得了进步,你可以建立一个图像分类器或物体检测器。在这些情况下,您会发现您想要绘制包含类名和概率的文本。

让我们看看OpenCV的putText函数是如何工作的:

OpenCV的putText函数负责在图像上绘制文本。让我们看看所需的参数:

img:输出图像。

text:我们要在图像上写入/绘制的文本字符串。

pt:文本的起点。

font:我经常使用CV2。FONT\u HERSHEY\u SIMPLEX。这里列出了可用的字体。

scale:字体大小倍增。

color:文本颜色。

thickness:笔划的厚度(以像素为单位)。

第84行和第85行的代码将绘制文本“OpenCV+Jurassic Park!!!”在下图的输出图像上显示绿色:

通常,您会发现您希望在图像上显示文本以实现可视化。使用CV2。上面显示的putText代码您可以使用不同的颜色、字体、大小和/或位置练习在图像上叠加文本。

运行第一个OpenCV教程Python脚本


在我的文章中,我通常会提供一个部分,详细说明如何在计算机上运行代码。在这篇博文中,我做了以下假设:

您已经从这篇博文的“下载”部分下载了代码。

您已经在系统上安装了OpenCV和imutils库。

要执行我们的第一个脚本,请打开一个终端或命令窗口(这里也可以用Pycharm自带的那个终端),并导航到文件或在必要时提取它们。

在此输入以下命令:

以下是终端的反馈:

命令位于bash提示符$character之后。只需在您的终端输入python opencv_tutorial_01.py,然后第一个图像将出现。

要循环完成我们刚刚学习的每个步骤,请确保图像窗口处于活动状态,然后按任意键。

上面的前两个代码块告诉Python在终端中打印信息。如果您的终端可见,您将看到终端输出(如上图)。

那么我们教程的第一大部分就讲完了。

这是我这个前面一直以游戏为主的up的第一次尝试,如果文章有错误以及难懂的地方,欢迎反馈!

基于Python的Opencv入门教程(P5.让我们在图片上画画)的评论 (共 条)

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