opencv实现图像识别操作(详细!!)

在当今数字化时代,计算机视觉作为人工智能领域的一个重要分支,正迅速发展并广泛应用于我们生活的方方面面。从简单的图像编辑到复杂的场景理解,计算机视觉技术不断推动着科技创新的边界。在这个领域,OpenCV(Open Source Computer Vision Library)扮演着一个核心的角色。自1999年由Intel公司创立以来,OpenCV已经成长为一个功能丰富、性能卓越的开源计算机视觉和机器学习软件库。

OpenCV以其跨平台性、多语言支持和易用性,为全球的研究人员和开发者提供了一个强大的工具集。它不仅包含了基础的图像处理和分析功能,还涵盖了高级的机器学习算法和深度学习模型。无论是在学术研究还是在工业应用中,OpenCV都是实现计算机视觉解决方案的理想选择。

OK!!那就开始了解这项技术吧!!

这个项目一共要使用几个库,分别是:

pyautogui
cv2
time

没有的库可以使用pip安装:

pip install "需要安装的库"

关于cv2这个库我在之前的一篇文章里已经交给过大家如何安装了,就是我的第一篇文章,大家不知道的可以去看一下。

系统:windows

language:Python

第一步

第一步自然是导入模块:

import pyautogui
import cv2
import time

然后完成一个屏幕快照(就是用程序完成截屏),并将其保存在本地

time.sleep(2)
im = pyautogui.screenshot()
im.save("dangxiaceshi.png")

程序在这里执行的话,就会创建一个.png图片:

这样就准备好了屏幕的截图,然后还需要准备好一张你需要识别对照的图片

第二步

然后我们要用cv2库去解析这两张图片:

screen = cv2.imread("dangxiaceshi.png")
filephoto = cv2.imread("filePhoto.png")   # 这里是填你需要对比的图片

这样我们就拥有了读取好的两个对象

接着在屏幕快照中对比按钮图片,定位其准确位置

result = cv2.matchTemplate(filephoto, screen, cv2.TM_CCOEFF_NORMED)
print(result)

这里返回的是一堆二维列表

[[-0.00956279 -0.02620975 -0.04090587 ... -0.16048051 -0.15173098
  -0.14247805]
 [-0.01235431 -0.02825959 -0.04199527 ... -0.14669055 -0.1386818
  -0.12976056]
 [-0.01532061 -0.03045696 -0.04302071 ... -0.13442378 -0.12651582
  -0.11721867]
 ...
 [-0.07626744 -0.06629921 -0.05211597 ...  0.09116595  0.0717186
   0.05216556]
 [-0.09266812 -0.0841197  -0.0712975  ...  0.08265855  0.0650967
   0.0472076 ]
 [-0.1092561  -0.10233315 -0.09105043 ...  0.08485452  0.06790818
   0.04974034]]

这里我们去获取最相似的坐标点

获取最相似坐标

我们需要时用到  cv2.minMaxLoc()方法

pos_start = cv2.minMaxLoc(result)
print(pos_start)

然而会返回包含着四个元素的元组;

(-0.4423578977584839, 0.9812589883804321, (113, 3), (1319, 1542))

含义为:

最不相似点分数,最相似点分数,最不相似点坐标,最相似点坐标

而我们需要的为最相似的坐标,故将代码修改为:

post_start = cv2.minMaxLoc(result)[3]

就是取走了最后一个第四位元素

定位到图片中心位置

我们要利用shape方法,

.shape 返回一个元组,包含三个整数,分别代表图像的高(行数)、宽(列数)和颜色通道数。

x = int(post_start[0]) + int(filephoto.shape[1]/2)
y = int(post_start[1]) + int(filephoto.shape[0]/2)

故而便能得到相似点中心的x, y两点坐标

那我们就能在当前图像下定位到了,再加入一个右键点击的行为吧:

pyautogui.click(x,y, button='right')

这样就完成了一个识别点击的程序

当当!!

--------

本文章的源码已经放在资源里

希望可以帮助到你!!

  • 7
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值