大家好,
希望你们都好,在接下来的博客里,我会尽力帮助你们开始你们的开放式简历课程。这是本系列的第一篇博客,在这篇博客中,我主要关注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/