1. 磐创AI-开放猫官方网站首页
  2. Medium

打开CV基本指南第1部分:

大家好,

希望你们都好,在接下来的博客里,我会尽力帮助你们开始你们的开放式简历课程。这是本系列的第一篇博客,在这篇博客中,我主要关注OpenCV的基础,不要浪费更多的时间,让我们开始吧。

OpenCV是开源计算机视觉库的缩写。它是用来解决计算机视觉问题的Python库。通过使用OpenCV,我们可以很容易地添加不同的图像,或者有时我们可以裁剪图像,或者我们可以检测图像中的边缘,或者我们可以将其用于人脸检测等。基本上,使用OpenCV库可以非常容易地执行计算机视觉问题。

OpenCV的编程历史:

根据维基百科

OpenCV是用C++编写的,它的主要接口是C++,但它仍然保留了一个不太全面的旧C接口,尽管范围很广。所有新的开发和算法都出现在C++界面中。Python、Java和MATLAB/Octave中都有绑定。C++ C interface Python Java MATLAB OCTAVE

请检查下面提到的问答系列,它将涵盖您的所有概念

如何安装OpenCV?

在本模块中,我们需要Numpy和Matplotlib以供将来使用。因此,我们可以通过在命令提示符下执行下面提到的命令来安装所有这些(这里我假设您的系统中已经安装了python3.0):

1)pip安装号

2)pip安装matplotlib

3)pip安装openCV-contrib-python

如果安装过程中有任何问题,请参考此链接了解详细信息link

如何加载和显示图像?

首先,我们需要导入一些重要的库,如下所示:

现在我们将尝试使用im.使用cv2_imshow读取并显示图像(如果有任何问题,您也可以使用cv.imshow,因为我正在使用Google Collab,所以我更喜欢使用cv2_imshow)。

上述代码的输出为:

我们可以用与图像相同的方式读取和显示视频吗?

是的,我们可以,但是图像和视频有什么不同呢?

实际上,最简单的答案是,一张照片是一张图像,而视频是一系列以指定的帧频顺序播放的图像,通常来自播放视频文件的软件(数字)或播放磁带的硬件(模拟)。换句话说,视频是有运动的。

当我们尝试读取和显示视频时,我们会在OpenCV中观察到相同的情况,我们得到了图像的序列,我们可以对图像执行相同的操作。

让我们拭目以待吧。

上述代码的输出为:

我已经展示了视频的前2帧。但在输出中,您将获得视频中存在的所有可能的帧。

另外,如果我们必须捕获实况视频,那么我们可以使用cv.VideoCapture(0),这一点很重要。如果我们有2个摄像头连接到系统上,那么我们可以使用cv.VideoCapture(1),我们可以进一步增加摄像头的数量。

如何调整图像大小?

缩小映像:

有些时候,我们得到的图像是高分辨率的,所以很难对这类图像进行任何操作,因为这会占用更多的空间,影响性能。在这种情况下,我们将调整图像的大小和比例以避免此类问题。cv.resize()收缩原始图像的首选插值方法是cv.INTER_AREA。

下面提到的是我们可以用来调整图像、视频和实况视频大小的函数。

现在,我们将尝试将图像大小调整50%。

上述代码的输出为:

原图:

调整后的大小:

放大图像:

上面我们已经看到了图像的缩小。现在我们将重点放在图像的放大上。

我们将使用cv.INTER_CUB立方和cv.INTER_LINEAR进行放大。与cv.INTER_LINEAR相比,cv.INTER_CUBLE较慢,但在cv.INTER_CUBLE的情况下输出比cv.INTER_LINEAR要好得多。默认情况下,插值方法cv.INTER_LINEAR用于所有调整大小的目的。

上述代码的输出为:

视频调整大小:

现在我们将检查视频的大小。

上述代码的输出为:

下面提到的是另一个功能,它在视频直播的情况下很有帮助。

如何在图像中添加形状和文本?

在这里,我们将尝试添加不同的形状,如矩形、圆形,并尝试形状的厚度。

1)在画面中添加矩形:

下面提到的是这里的代码,我们将Original_img作为输入图像,我们将在该图像上绘制矩形。矩形的起始点为(200,200),最大为(300,300)。当颜色为B=200、G=100和R=150时。

检查下面提到的代码并输出

上述代码的输出:

2)添加全厚矩形:

下面提到的是这里的代码,我们将Original_img作为输入图像,我们将在该图像上绘制矩形。矩形的起始点是(0,0),它一直到图像的中心。颜色为B=200,G=155,R=40。这里我们取了厚度=-1,所以整个矩形都填满了颜色。

上述代码的输出:

3)添加全厚圆:

下面提到的是这里的代码,我们将Original_img作为我们将在其上绘制圆的输入图像。圆的中心像素点为(450,450),圆的半径为40。当颜色为B=25、G=0和R=100时。这里我们取了厚度=-1,所以整个圆都填满了颜色。

上述代码的输出:

4)在画面中添加行:

下面提到的是这里的代码,我们将Original_img作为输入图像,我们将在该图像上绘制矩形。直线的起点像素为(300,300),终点像素为(500,500)。

上述代码的输出:

5)在图片中添加文字:

在这里,我们将通过使用cv.putText()方法在空白图像中添加文本,其中我们输入文本、要放置文本的像素位置,还可以选择字体类型,如font_hershey_simplex、font_hershey_Plain等,字体比例、颜色、粗细。

我们还可以使用numpy创建空白图像,下面的代码中也提到了这一点。

上述代码的输出:

如何裁剪图像?

通过使用下面提到的代码,我们可以很容易地裁剪图像的特定部分。这里只有你必须提到你必须裁剪的像素。

上述代码的输出:

原图:

从图像中裁剪零件:

如何旋转或移动图像?

如果我们想要移动图像,请检查下面提到的功能,该功能对相同的功能非常有用:

在这里,我们尝试使用上面提到的函数来旋转图像。

上述代码的输出:

现在,我们将尝试旋转上面已经旋转的图像。

从上面的输出我们知道,如果我们试图旋转已经旋转的图像,那么在先前图像中不可见的图像部分在当前输出图像中也会丢失。

此外,我们还可以将图像颠倒过来。检查下面提到的代码并输出。

上述代码的输出:

摘要:

如果你到目前为止已经读过这个博客,那么你一定熟悉OpenCV Basic。关于OpenCV话题的睡觉将在下一篇博客中报道。检查此链接以查看下一个博客。

配置文件:

感谢您的阅读!请鼓掌感谢我的辛勤工作。我总是对建设性的反馈持开放态度–如果你对这篇分析有后续的想法,请在下面发表评论或通过LinkedIn联系。via LinkedIn.

参考文献:

原创文章,作者:fendouai,如若转载,请注明出处:https://panchuang.net/2021/06/21/%e6%89%93%e5%bc%80cv%e5%9f%ba%e6%9c%ac%e6%8c%87%e5%8d%97%e7%ac%ac1%e9%83%a8%e5%88%86%ef%bc%9a/

联系我们

400-800-8888

在线咨询:点击这里给我发消息

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息