Opencv图片的旋转和图片的模板匹配

devtools/2025/1/12 5:41:19/

图片的旋转和图片的模板匹配

目录

  • 图片的旋转和图片的模板匹配
    • 1 图片的旋转
      • 1.1 numpy旋转
        • 1.1.1 函数
        • 1.1.2 测试
      • 1.2 opencv旋转
        • 1.2.1 函数
        • 1.2.2 测试
    • 2 图片的模板匹配
      • 2.1 函数
      • 2.2 实际测试

1 图片的旋转


1.1 numpy旋转

1.1.1 函数
  • np.rot90(kl,k=1),k=1逆时针旋转90度,kl为图片
  • np.rot90(kl,k=-1),k=-1顺时针旋转90度,kl为图片
1.1.2 测试

图片
在这里插入图片描述

代码展示:

python">import numpy as np
kl = cv2.imread('kl.jpg')
kl_rot901 = np.rot90(kl,k=1)
kl_rot90_1 =np.rot90(kl,k=-1)
cv2.imshow('kl',kl)
cv2.waitKey(0)
cv2.imshow('kl_rot901',kl_rot901)
cv2.waitKey(0)
cv2.imshow('kl_rot90_1',kl_rot90_1)
cv2.waitKey(0)

运行结果:
在这里插入图片描述

opencv_32">1.2 opencv旋转

1.2.1 函数
  • cv2.rotate(kl,cv2.ROTATE_90_CLOCKWISE),顺时针90度
  • cv2.rotate(kl,cv2.ROTATE_90_COUNTERCLOCKWISE),逆时针90度
  • cv2.rotate(kl,cv2.ROTATE_180),180度
1.2.2 测试

代码展示:

python">import cv2
kl = cv2.imread('kl.jpg')
kl_ROTATE_90_CLOCKWISE = cv2.rotate(kl,cv2.ROTATE_90_CLOCKWISE)
kl_ROTATE_180 = cv2.rotate(kl,cv2.ROTATE_180)
kl_ROTATE_90_COUNTERCLOCKWISE = cv2.rotate(kl,cv2.ROTATE_90_COUNTERCLOCKWISE)
cv2.imshow('kl',kl)
cv2.waitKey(0)
cv2.imshow('kl_ROTATE_90_COUNTERCLOCKWISE',kl_ROTATE_90_COUNTERCLOCKWISE)
cv2.waitKey(0)
cv2.imshow('kl_ROTATE_90_CLOCKWISE',kl_ROTATE_90_CLOCKWISE)
cv2.waitKey(0)
cv2.imshow('kl_ROTATE_180',kl_ROTATE_180)
cv2.waitKey(0)

运行结果:
在这里插入图片描述

2 图片的模板匹配

2.1 函数

  • re=cv2.matchTemplate(kl,bt,cv2.TM_CCOEFF),进行匹配
  • min_val,max_val,min_loc,max_loc = cv2.minMaxLoc(re),匹配得分和坐标
    • min_val最小得分,max_val,最大得分
    • min_loc,最小得分坐标,max_loc,最大得分坐标(x,y)=(max_loc[0],max_loc[1])

2.2 实际测试

图片
在这里插入图片描述

在这里插入图片描述

代码展示:

python">import cv2
bt = cv2.imread('bt.png')
kl = cv2.imread('kl.png')
h,w = bt.shape[:2]
re = cv2.matchTemplate(kl,bt,cv2.TM_CCOEFF)
min_val,max_val,min_loc,max_loc = cv2.minMaxLoc(re)
tp_left = max_loc
bt_right = (tp_left[0]+w, tp_left[1]+h)
kl_copy = kl.copy()
kl_bt = cv2.rectangle(kl_copy,tp_left,bt_right,(255,0,0),2)
cv2.imshow('bt',bt)
cv2.waitKey(0)
cv2.imshow('kl',kl)
cv2.waitKey(0)
cv2.imshow('kl_bt',kl_bt)
cv2.waitKey(0)

运行结果:
在这里插入图片描述


http://www.ppmy.cn/devtools/149796.html

相关文章

seleniun 自动化程序,python编程 我监控 chrome debug数据后 ,怎么获取控制台的信息呢

python 好的,使用 Python 来监控 Chrome 的调试数据并获取控制台信息,可以使用 websocket-client 库来连接 Chrome 的 WebSocket 接口。以下是一个详细的示例: 1. 安装必要的库 首先,你需要安装 websocket-client 库。可以使用…

前端组件开发:组件开发 / 定义配置 / 配置驱动开发 / 爬虫配置 / 组件V2.0 / form表单 / table表单

一、最早的灵感 最早的灵感来自sprider / 网络爬虫 / 爬虫配置,在爬虫爬取网站文章时候,会输入给爬虫一个配置文件,里边的内容是一个json对象。里边包含了所有想要抓取的页面的信息。爬虫通过这个配置就可以抓取目标网站的数据。其实本文要引…

鸿蒙面试 2025-01-09

鸿蒙分布式理念?(个人认为理解就好) 鸿蒙操作系统的分布式理念主要体现在其独特的“流转”能力和相关的分布式操作上。在鸿蒙系统中,“流转”是指涉多端的分布式操作,它打破了设备之间的界限,实现了多设备…

git提交

基本流程:新建分支 → 分支上开发(写代码) → 提交 → 合并到主分支 拉取最新代码因为当前在 master 分支下,你必须拉取最新代码,保证当前代码与线上同步(最新),执行以下命令:bashgit pull orig…

通信与网络安全之网络连接

一.传输介质类型 1.基本概念 计算机总是以二进制的数字(0或1)形式工作 1)数字和模拟 模拟数据一般采用模拟信号(Analog Signal),例如用一系列连续变化的电磁波(如无线电与电视广播中的电磁波),或电压信号(如电话传…

【南京工业大学主办 | JPCS独立出版 | 高届数、会议历史好 | 投稿领域广泛】第八届智能制造与自动化国际学术会议(IMA 2025)

南京工业大学主办 | 高校、学会共同协办;杰青、优青加盟! 已签约JPCS独立出版,确定ISSN:1742-6596 高届数、会议历史好 | EI,Scopus 稳定检索有保障 投稿领域广泛,与制造工程、机械工程、控制工程、自动化系统相关的…

【面试题】技术场景 6、Java 生产环境 bug 排查

生产环境 bug 排查思路 分析日志:首先通过分析日志查看是否存在错误信息,利用之前讲过的 elk 及查看日志的命令缩小查找错误范围,方便定位问题。远程 debug 适用环境:一般公司正式生产环境不允许远程 debug,多在测试环…

Flink概念知识讲解之:Restart重启策略配置

Flink概念知识讲解之:Restart重启策略配置 当 Task 发生故障时,Flink 需要重启出错的 Task 以及其他受到影响的 Task ,以使得作业恢复到正常执行状态。 Flink 通过重启策略和故障恢复策略来控制 Task 重启:重启策略决定是否可以…