基于Python的Opencv入门教程(P5.让我们在图片上画画)
书接上文(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为我们处理这些。
程序运行的结果如下图所示⬇⬇⬇

现在让我们在掌门的脸前画一个蓝色的圆圈:
要绘制圆,需要向CV2提供以下参数。圆圈:
img:输出图像。
center:圆的中心坐标。我提供的(615, 245)就在掌门的脸上。
radius:以像素为单位的圆半径。我提供了一个20像素的值。
color:圆形颜色。这一次我使用了蓝色,在BGR元组的B和G+R组件中分别用255和0表示(255,0,0)。
厚度:线条的厚度。因为我提供了一个负值(-1),所以圆是实心的/被填充的。
程序运行的结果如下图所示⬇⬇⬇

让我们继续吧!
接下来,我们将画一条红线。这条线穿过掌门的头,穿过他的脸,到达他的手。
如果仔细查看方法参数并将其与矩形参数进行比较,您会注意到它们是相同的:
就像在矩形中一样,我们提供两个点、一种颜色和一条线的厚度。OpenCV的后端完成了其余的工作。
图13显示了代码块第78行的结果:

通常,您会发现,为了显示的目的,您需要在图像上覆盖文本。如果你在做人脸识别的工作,你可能会想把这个人的名字画在他们的脸上。或者,如果你在计算机视觉职业上取得了进步,你可以建立一个图像分类器或物体检测器。在这些情况下,您会发现您想要绘制包含类名和概率的文本。
让我们看看OpenCV的putText函数是如何工作的:
OpenCV的putText函数负责在图像上绘制文本。让我们看看所需的参数:
img:输出图像。
text:我们要在图像上写入/绘制的文本字符串。
pt:文本的起点。
font:我经常使用CV2。FONT\u HERSHEY\u SIMPLEX。这里列出了可用的字体。
scale:字体大小倍增。
color:文本颜色。
thickness:笔划的厚度(以像素为单位)。
第84行和第85行的代码将绘制文本“OpenCV+Jurassic Park!!!”在下图的输出图像上显示绿色:

运行第一个OpenCV教程Python脚本
在我的文章中,我通常会提供一个部分,详细说明如何在计算机上运行代码。在这篇博文中,我做了以下假设:
您已经从这篇博文的“下载”部分下载了代码。
您已经在系统上安装了OpenCV和imutils库。
要执行我们的第一个脚本,请打开一个终端或命令窗口(这里也可以用Pycharm自带的那个终端),并导航到文件或在必要时提取它们。
在此输入以下命令:
以下是终端的反馈:

命令位于bash提示符$character之后。只需在您的终端输入python opencv_tutorial_01.py,然后第一个图像将出现。
要循环完成我们刚刚学习的每个步骤,请确保图像窗口处于活动状态,然后按任意键。
上面的前两个代码块告诉Python在终端中打印信息。如果您的终端可见,您将看到终端输出(如上图)。

那么我们教程的第一大部分就讲完了。
这是我这个前面一直以游戏为主的up的第一次尝试,如果文章有错误以及难懂的地方,欢迎反馈!