在python中利用opencv简单做图片比对的方法

  1. 安装opencv

首先需要安装OpenCV,可以通过命令行或者Anaconda Prompt输入以下命令进行安装:

pip install opencv-python
  1. 导入库

导入库OpenCV,并载入两张待比对的图片

import cv2

img1 = cv2.imread('image1.jpg')
img2 = cv2.imread('image2.jpg')
  1. 比对图片

使用OpenCV的matchTemplate函数进行图片比对,该函数将返回一副灰度图像,表示模板在输入图像中的匹配情况:

res = cv2.matchTemplate(img1, img2, cv2.TM_CCOEFF_NORMED)
  1. 提取匹配位置及匹配系数

提取匹配位置及匹配系数:

min_val, max_val, min_loc, max_loc = cv2.minMaxLoc(res)

其中min_loc和max_loc表示最小匹配值和最大匹配值所在的位置,max_val即为最大匹配值,也即匹配系数。

  1. 显示比对结果

最后可以把比对结果显示出来,用一个矩形框圈出模板在被比对图片中的位置:

w, h = img2.shape[:2]
top_left = max_loc
bottom_right = (top_left[0] + w, top_left[1] + h)
cv2.rectangle(img1, top_left, bottom_right, (0, 0, 255), 2)
cv2.imshow('Matched Image', img1)
cv2.waitKey(0)
cv2.destroyAllWindows()
  1. 示例1

下面是一个示例1,用于比对两张刻度尺图片中的相同位置,验证两张图片的尺度是否一致:

import cv2

img1 = cv2.imread('image1.jpg')
img2 = cv2.imread('image2.jpg')

res = cv2.matchTemplate(img1, img2, cv2.TM_CCOEFF_NORMED)
min_val, max_val, min_loc, max_loc = cv2.minMaxLoc(res)

w, h = img2.shape[:2]
top_left = max_loc
bottom_right = (top_left[0] + w, top_left[1] + h)
cv2.rectangle(img1, top_left, bottom_right, (0, 0, 255), 2)

cv2.imshow('Matched Image', img1)
cv2.waitKey(0)
cv2.destroyAllWindows()
  1. 示例2

下面是一个示例2,用于比对两张同一张图片的不同位置,验证两个位置的像素是否相同:

import cv2

img1 = cv2.imread('image1.jpg')
img2 = cv2.imread('image2.jpg')

res = cv2.matchTemplate(img1, img2, cv2.TM_CCOEFF_NORMED)
min_val, max_val, min_loc, max_loc = cv2.minMaxLoc(res)

w, h = img2.shape[:2]
top_left = max_loc
bottom_right = (top_left[0] + w, top_left[1] + h)
cv2.rectangle(img1, top_left, bottom_right, (0, 0, 255), 2)

cv2.imshow('Matched Image', img1)
cv2.waitKey(0)
cv2.destroyAllWindows()

img3 = img1[200:400, 200:400]
img4 = img1[600:800, 600:800]

res2 = cv2.matchTemplate(img3, img4, cv2.TM_CCOEFF_NORMED)
min_val2, max_val2, min_loc2, max_loc2 = cv2.minMaxLoc(res2)

if max_val2 > 0.9:
   print("The two selected areas are similar")
else:
   print("The two selected areas are different")

以上就是在python中利用opencv简单做图片比对的方法的完整攻略,包含两条示例说明。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:在python中利用opencv简单做图片比对的方法 - Python技术站

(0)
上一篇 2023年5月18日
下一篇 2023年5月18日

相关文章

  • python 制作自定义包并安装到系统目录的方法

    Python 是一门流行的编程语言,灵活性高、易于学习,能够实现许多应用。在编写 Python 代码时,我们常常需要用到各种不同的模块。对于重复使用的代码,我们可以将它们打包成一个包,方便管理和调用代码。 本文将介绍 Python 制作自定义包并安装到系统目录的方法。下面是详细的步骤: 1.创建包目录结构 第一步是创建包的目录结构。在包的根目录下,应该包含一…

    python 2023年5月30日
    00
  • Python通过跳板机访问数据库的方法

    下面是Python通过跳板机访问数据库的方法的完整攻略。 什么是跳板机? 跳板机是指一种位于内网和公网之间的服务器,它主要负责将内网中的计算机连接到公网上。通过跳板机,我们可以在公网上连接到内网上的计算机,从而实现数据交换和访问。 Python通过跳板机访问数据库的方法 在Python中要通过跳板机访问数据库可以使用paramiko库来连接跳板机,并通过SS…

    python 2023年5月23日
    00
  • Python学习之时间包使用教程详解

    Python学习之时间包使用教程详解 在Python中,我们可以使用官方内置的datetime模块来进行日期和时间相关的操作,但是时间的运算却十分繁琐。为了方便在Python中进行日期和时间相关的计算,我们可以使用第三方库:arrow。arrow是一个能够十分简化Python的日期和时间相关的操作的库,这里我们就来详细学习一下arrow库的使用方法。 安装 …

    python 2023年5月19日
    00
  • Python操作dict时避免出现KeyError的几种解决方法

    Python中的字典(dict)是一种常见的数据类型,用于存储键值对。但是在操作字典时,很容易遇到KeyError异常,这是由于访问了不存在的键所导致的。本文将为你介绍几种避免出现KeyError的方法,确保操作字典时更加健壮。 1. 使用in关键字 in操作符可以用于检查字典中是否存在某个键,我们可以在操作字典之前先用if语句判断这个键是否存在。以下是一段…

    python 2023年6月3日
    00
  • python利用appium实现手机APP自动化的示例

    针对这个话题,我将给出以下完整攻略: 准备工作 安装 Python3 环境 安装 appium-python-client 库 pip install Appium-Python-Client 安装 Android SDK, 并配置 ANDROID_HOME 环境变量 安装 JDK, 并配置 JAVA_HOME 环境变量 在手机上安装待测试的 APP 在电脑…

    python 2023年5月19日
    00
  • python pyinstaller库

    简要 pyinstaller模块主要用于python代码打包成exe程序直接使用,这样在其它电脑上即使没有python环境也是可以运行的。 用法 一.安装 pyinstaller属于第三方库,因此在使用的时候需提前安装 pip install pyinstaller 二.配置spec文件 1.配置生成exe程序文件夹 (1)如果不熟悉spec配置内容,可以在…

    python 2023年4月25日
    00
  • Python实现对比两个Excel数据内容并标记出不同

    下面是Python实现对比两个Excel数据内容并标记出不同的完整实例教程。 实现思路 本文使用Python语言,利用pandas库读取Excel文件,并将数据转换为DataFrame数据结构。利用DataFrame提供的函数对两个Excel表格进行比对,找寻不同的内容,并在新的Excel表格中标记出不同的内容。 读取Excel文件,将数据转换为DataFr…

    python 2023年5月13日
    00
  • Python安装tar.gz格式文件方法详解

    Python安装tar.gz格式文件方法详解 在Linux环境下,常见的一种文件格式就是tar.gz格式。Python项目也常常发布这种格式的文件。本文将详细介绍如何在Linux环境下安装tar.gz格式的Python文件。 步骤一 下载文件 首先找到需要安装的Python文件的下载链接,通过wget或者curl命令下载,如下面的示例: $ wget htt…

    python 2023年6月5日
    00
合作推广
合作推广
分享本页
返回顶部