图像是我们今天生活中必不可少的一部分,有了图像,记忆仍将留存。今天,我们将图像存储为数字数据。它使得保存更容易,也更容易分发。但是,新的挑战随之而来的是这件事。数字图像既不能复制,也不能编辑,所以有人发明了散列算法。对任何数字数据进行比较。
我的方法略有不同,但使用了相同的概念。我不会使用任何算法。在这个故事中,我想分享一下如何使用OpenCV Python比较两幅图像。嗯,这只是为了好玩,但值得学习。
简介
首先,我们来谈谈OpenCV。OpenCV是开源计算机视觉库(Open Source Computer Vision Library)的缩写。这是一个处理实时图像和视频的工具包,它还可以用来提供分析和机器学习功能。使用OpenCV可以访问2D和3D版本的图像和视频处理的许多高级库。
实际上,我想先告诉你。这将使用基本的编程概念,如果是Else函数。因此,对于每个认为学习编程基础知识毫无用处的人来说,我希望他们能理解,首先学习编程是值得的。
好了,回到图像上,你有没有想过是什么造就了图像?嗯,图像是由相互连接的字节集合构建的。所以,通过理解这一点,我想让你们理解这个概念。该程序将使用两个参数来确定图像是否相同。
让我们跳到代码中。
代码
首先,让我们尝试一下使用OpenCV库显示图像的简单脚本。但在此之前,这是我的档案树
E:\code>tree /f
Folder PATH listing for volume New Volume
Volume serial number is 8609-E59D
E:.
│ comparing_two_images.py
│
└───img
1.jpg
从树中,我们知道我有一个名为compasing_Two_images.py的脚本文件和一个名为1.jpg的img目录。接下来,为了导入OpenCV库,我们将使用名为CV2的库。您可以在这里找到有关它的文档。here
脚本将是这样的。
输出将如下所示
好的,图像显示成功了,但这不是我们的目的,对吧。好的,回到概念和我的承诺,我将在这里使用if Else语句。我们需要做的第一件事是写出两幅图像进行两次比较所必需的内容。
嗯,经过几次思考,我得到了两个参数,图像的大小和图像的颜色。每一张图片都有一个图像,有时它称为1920×1080(高清)等等。对于这个例子,我将使用我从谷歌获得的大小为1600×900的伦敦桥图像。
实际上,您可以使用Shape来显示图像的形状。同样,因为图像只是收集到一个整体中的字节的表示。从上面的脚本中,如果您在下一行中添加print(Original.shape),您将得到如下输出。
有一个具有三个元素的元组(我将使用‘index’,因为它更熟悉)。指数一和指数二分别为900和1600。它代表了图像的宽度和高度的尺寸。第三个元组被人们称为通道,取值为3。意思是,图片有三种颜色‘RGB’。
好的,你可以看看我要用什么参数,是的,大小和颜色。此程序将检测图像是否已更改。所以我复制了这个图像,就像这样。
第一个是原始文件,第二个是更改色调,第三个是图像的复制,最后一个是图像的旋转。再次回到图像的形状,我们只需要前两个元组,就可以让它显示出我们想要的效果。我们可以在形状后面加上[:2]。好的,让我们将复制的图像添加到我们的代码中,并存储图像形状。在本例中,我想使用文件1Color.jpg,代码如下所示。
接下来,我们可以使用if Else语句比较图像的大小。你猜得到吗?这真的很简单,代码是这样的。
代码运行良好,只要图像形状不同,代码就会打印出大小不同的图像。但是,这是不够的比较。为了使程序更可靠,我们将添加第二个参数。那是图像的颜色。
图像颜色由“红”、“绿”和“蓝”三部分组成。OpenCV具有从图像中提取和捕捉两个颜色元素的差异的功能,称为差值(Subact)。因为我们要检查两个图像的相似性,所以只要图像大小相同,我们就应该将条件放在if语句中,如下所示。
在获取了‘red’、‘green’和‘Blue’元素之间的差异之后,下一步使用下一个if语句可以检查‘b’、‘g’和‘r’的值是否为零。如果值为零,则表示元素相同,如果不同,则图片不同(已更改)。
脚本使用的是嵌套的if,否则对吗?好的,如果您看到Else专栏,我会添加类似于cv2.imshow(‘Difference’,Difference)这样的小脚本。用于显示两幅图像的不同颜色。因此,如果我将复制的图像1Color.jpg与1.jpg进行比较,输出将如下所示。
测试
至此,程序完成。但是,您可以使用您的创造力在if Else语句中添加更多条件。您也可以使用基本的Python函数输入,这样我们就可以在不更改任何程序的情况下输入我们想要的图像。这是我构建的程序的文档。
超乎寻常的
感谢您读到这里。实际上我想让你明白的是,简单的编程仍然是一件事,你总能从中学到一些东西。好的,祝你有个好的代码!✌
源代码:
更多内容请访问Playenglish.ioplainenglish.io
原创文章,作者:fendouai,如若转载,请注明出处:https://panchuang.net/2021/07/26/%e5%a6%82%e4%bd%95%e4%bd%bf%e7%94%a8opencv-python%e6%af%94%e8%be%83%e4%b8%a4%e4%b8%aa%e5%9b%be%e5%83%8f/