在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日

相关文章

  • pip报错“ValueError: invalid literal for int() with base 10: ‘3.1’”怎么处理?

    当使用pip安装Python包时,可能会遇到“ValueError: invalid literal for int() with base 10: ‘3.1’”错误。这个错误通常是由以下原因之一引起的: 版本号格式错误:如果您的Python包版本号格式不正确,则可能会出现此错误。在这种情况下,需要更正版本号格式。 pip版本过低:如果您的pip版本过低,则…

    python 2023年5月4日
    00
  • 实例Python处理XML文件的方法

    Python处理XML文件是一个常见的应用场景。在本文中,我们将深入讲解如何使用Python处理XML文件,并提供两个示例,以便更好地理解这个过程。 Python处理XML文件的方法 Python处理XML文件的方法如下: 使用ElementTree模块解析XML文件,获取XML根节点。 使用ElementTree模块的方法,如find()、findall(…

    python 2023年5月15日
    00
  • 【0基础学爬虫】爬虫基础之数据存储

    大数据时代,各行各业对数据采集的需求日益增多,网络爬虫的运用也更为广泛,越来越多的人开始学习网络爬虫这项技术,K哥爬虫此前已经推出不少爬虫进阶、逆向相关文章,为实现从易到难全方位覆盖,特设【0基础学爬虫】专栏,帮助小白快速入门爬虫,本期为数据存储。 概述 上期我们介绍到了文件存储,讲到了如何将数据存入各种文本文件之中,这种数据存储方式虽然很简便,但是存在很多…

    python 2023年4月17日
    00
  • Python中Selenium模块的使用详解

    Python中Selenium模块的使用详解 Selenium是一个自动化测试工具,可以模拟用户在浏览器中的操作,例如点击、输入、提交等。在Python中,可以使用Selenium模块来实现自动化测试。本文将详细介绍Python中Selenium模块的使用方法,包括安装、配置、基本操作和常见问题解决方案。 安装和配置 在使用Selenium之前,需要先安装S…

    python 2023年5月15日
    00
  • Python seaborn数据可视化绘图(直方图,密度图,散点图)

    Python seaborn是一个基于matplotlib的数据可视化库,可以通过Python seaborn展示出优美的图形,帮助我们更好地理解数据。本文主要讲解如何使用Python seaborn绘制直方图、密度图以及散点图。 安装Python seaborn 在使用Python seaborn做数据可视化的时候,首先需要安装Python seaborn…

    python 2023年5月18日
    00
  • 对Python中数组的几种使用方法总结

    对Python中数组的几种使用方法总结 在Python中,数组以列表(list)的形式出现,可以通过下标来访问,也可以进行增删改查等操作。本文将会介绍几种常见的Python数组使用方法。 1. 创建数组 创建数组可以使用[]或list(),例如: arr1 = [1, 2, 3, 4, 5] arr2 = list(range(1, 6)) 2. 访问数组元…

    python 2023年6月5日
    00
  • Win8下python3.5.1安装教程

    Win8下python3.5.1安装教程: Step1: 下载Python3.5.1安装包 首先,我们需要下载Python3.5.1版本的安装包,可以在Python官网的下载页面https://www.python.org/downloads/windows/选择 Windows x86-64 executable installer。 Step2: 运行安…

    python 2023年5月30日
    00
  • Python用来做Web开发的优势有哪些

    当今Web开发领域中,有很多语言可以用来开发Web应用,其中Python也是一种十分流行的选择。Python语言本身就具备一些Web开发方面的优势,下面我们来一一介绍。 1. 方便易用的Web框架 Python拥有非常丰富和多样化的Web框架。其中,Flask和Django是最流行的两个Web框架。 Flask是一个非常轻量级的Web框架,适用于简单和小型应…

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