在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绘图常用的库有很多,比如matplotlib、seaborn、plotly等等,不同库针对不同的应用场景。在本文中,我们将以matplotlib为例,介绍Python绘图的基础知识。 一、matplotlib介绍 matplotlib是Python中最著名的绘图库之一,它可以用来创建各种类型的静态、动态、交互式和导出的图表。ma…

    python 2023年5月19日
    00
  • 如何在Django中添加没有微秒的 DateTimeField 属性详解

    为了解决没有微秒的 DateTimeField 属性问题,我们需要做以下两个步骤: 步骤一:定义自己的 DateTimeField 属性 如果我们需要在 Django 中创建自己的 DateTimeField,需要继承 django.db.models.DateTimeField,然后覆盖以下两个方法: from django.db import model…

    python 2023年6月2日
    00
  • python3 面向对象__类的内置属性与方法的实例代码

    Python 3 是一种面向对象编程的语言,这意味着你可以创建类和对象,并使用它们来管理数据和行为。类是对象的模板或蓝图,它定义了对象的属性和方法。Python 3 为类和对象提供了许多内置属性和方法,让你更方便地处理它们。 类的内置属性 Python 3 中的每个类都有一些内置属性,如下所示: __name__:表示类的名称 __module__:表示定义…

    python 2023年6月2日
    00
  • 用 python 进行微信好友信息分析

    下面我将为您详细讲解用Python进行微信好友信息分析的实例教程。 1. 环境搭建 在进行微信好友信息分析之前,我们需要先搭建好相应的环境。具体步骤如下: 1.1 安装itchat库 首先,我们需要安装一个名为itchat的Python库,它可以实现通过Python控制微信的功能。 你可以通过以下命令在命令行中安装itchat: pip install it…

    python 2023年5月13日
    00
  • python中判断文件结束符的具体方法

    在Python中,判断文件是否已经读到末尾可以使用以下两种方式: 方法一: 使用文件对象的readline()方法,当它返回空字符串”时即表示已经读到文件的末尾,代码示例如下: with open(‘file.txt’, ‘r’) as f: while True: line = f.readline() if not line: break print(…

    python 2023年6月2日
    00
  • Python标准库pathlib操作目录和文件

    Python标准库pathlib操作目录和文件 pathlib是Python 3.4及以上版本提供的标准库之一,用于操作文件系统路径。该库可以方便地进行路径的拼接、文件/目录的创建、复制/移动、删除等操作。下面是对该库的详细介绍和示例说明。 pathlib.Path类常用方法 pathlib提供了Path类,该类可用于创建一个路径对象,它包含了常用的目录和文…

    python 2023年6月2日
    00
  • Python实现微信小程序支付功能

    Python实现微信小程序支付功能完整攻略 微信小程序是一种轻量级的应用程序,被广泛应用于各种场景中,例如线上商城、酒店预订、交通出行等。在这些场景中,支付功能是微信小程序的核心功能之一。本文将详细讲解如何用Python实现微信小程序的支付功能,包括如何获取access_token、预下单、生成签名等。 获取access_token 在使用微信支付之前,首先…

    python 2023年5月23日
    00
  • Python安装与基本数据类型教程详解

    Python安装教程 1. 下载安装包 首先,从Python官方网站(https://www.python.org/downloads/)下载最新版本的Python安装包。 2. 运行安装包 下载完成之后,双击运行安装包。在安装界面中选择“Install Now”以开始安装。 3. 配置环境变量 安装完成之后,需要将Python安装路径添加到系统环境变量中。…

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