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

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

目录

  • 图片的旋转和图片的模板匹配
    • 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 测试

图片
在这里插入图片描述

代码展示:

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)

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

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 测试

代码展示:

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 实际测试

图片
在这里插入图片描述

在这里插入图片描述

代码展示:

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)

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/952014.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【YOLOv8杂草作物目标检测】

YOLOv8杂草目标检测 算法介绍模型和数据集下载 算法介绍 YOLOv8在禾本科杂草目标检测方面有显著的应用和效果。以下是一些关键信息的总结: 农作物幼苗与杂草检测系统:基于YOLOv8深度学习框架,通过2822张图片训练了一个目标检测模型&#xff…

vue3 react使用高德离线地图,最新解决内网情况首次不能加载离线地图2025年1月10日

下载离线资源 下载地址 https://download.csdn.net/download/u010843503/90234612 2、部署私有化瓦片资源 ngxin中配置如下 server{listen 18082;server_name localhost;location / {root D:/GisMap/_alllayers;#try_files $uri $uri/ /index.html;#index index.html;} }下载…

Hbuilder ios 离线打包sdk版本4.36,HbuilderX 4.36生成打包资源 问题记录

1、打包文档地址https://nativesupport.dcloud.net.cn/AppDocs/usesdk/ios.html#%E9%85%8D%E7%BD%AE%E5%BA%94%E7%94%A8%E7%89%88%E6%9C%AC%E5%8F%B7 2、配置应用图标 如果没有appicon文件,此时找到 Assets.xcassets 或者 Images.xcassets(看你sdk引入的启动文件中…

Unity中 Xlua使用整理(二)

1.Xlua的配置应用 xLua所有的配置都支持三种方式:打标签;静态列表;动态列表。配置要求: 列表方式均必须是static的字段/属性 列表方式均必须放到一个static类 建议不用标签方式 建议列表方式配置放Editor目录(如果是H…

【计算机网络】课程 实验二 交换机基本配置和VLAN 间路由实现

实验二 交换机基本配置和VLAN 间路由实现 一、实验目的 1.了解交换机的管理方式。 2.掌握通过Console接口对交换机进行配置的方法。 3.掌握交换机命令行各种模式的区别,能够使用各种帮助信息以及命令进行基本的配置。 4&…

【数据结构:前缀树Trie】

目录 前言前缀树介绍和应用一、前缀树的定义前缀树的问题和思考前缀树的映射思想前缀树三大性质 二.前缀树节点结构三. 前缀树接口介绍和实现四个接口API1. insert(String word)2. search(String word)3. startsWith(String pre)4. delete(String word) API实现1. 查询操作sear…

Jenkins触发器--在其他项目执行后构建

前言: jenkins中有多种触发器可用,可以方便的控制构建的启动 这里简单介绍下项目后构建的配置方法 1. 解释: Build after other projects are built Set up a trigger so that when some other projects finish building, a new build is…

Linux(18)——提高命令行运行效率

目录 一、创建和执行 shell 脚本: 1、命令解释器: 2、执行 Bash Shell 脚本: 3、从 shell 脚本提供输出: 二、对特殊字符加引号: 1、反斜杠 (\): 2、单引号 ( &…

软件系统安全逆向分析-混淆对抗

1. 概述 在一般的软件中,我们逆向分析时候通常都不能直接看到软件的明文源代码,或多或少存在着混淆对抗的操作。下面,我会实践操作一个例子从无从下手到攻破目标。 花指令对抗虚函数表RC4 2. 实战-donntyousee 题目载体为具有漏洞的小型软…

计算机网络 (33)传输控制协议TCP概述

一、定义与基本概念 TCP是一种面向连接的、可靠的、基于字节流的传输层通信协议。它工作在OSI模型的第四层,即传输层,为用户提供可靠的、有序的和无差错的数据传输服务。TCP协议与UDP协议是传输层的两大主要协议,但两者在设计上有明显的不同&…

【从0带做】基于Springboot3+Vue3的高校食堂点餐系统

大家好,我是武哥,最近给大家手撸了一个基于SpringBoot3Vue3的高校食堂点餐系统,可用于毕业设计、课程设计、练手学习,系统全部原创,如有遇到网上抄袭站长的,欢迎联系博主~ 详细介绍 https://www.javaxm.c…

一文说清dockerfile编写

docker用的时间比较久了,关于怎样把jar打成镜像,怎样基于已有mysql镜像添加额外初始化后封装成新的镜像,进行简单的说明。 1.jar封装镜像 from centos # 设置本地为中文,解决中文乱码问题 RUN localedef -i zh_CN -f UTF-8 zh_CN…

基于Python实现的通用小规模搜索引擎

基于Python实现的通用小规模搜索引擎 1.项目简介 1.1背景 《信息内容安全》网络信息内容获取技术课程项目设计 一个至少能支持10个以上网站的爬虫程序,且支持增量式数据采集;并至少采集10000个实际网页;针对采集回来的网页内容, 能够实现网页文本的分…

ssm旅游攻略网站设计+jsp

系统包含:源码论文 所用技术:SpringBootVueSSMMybatisMysql 需要源码或者定制看文章最下面或看我的主页 目 录 目 录 III 1 绪论 1 1.1 研究背景 1 1.2 目的和意义 1 1.3 论文结构安排 2 2 相关技术 3 2.1 SSM框架介绍 3 2.2 B/S结构介绍 3 …

算法提高 图形输出

时间限制:C/C 1000MS,其他语言 2000MS 内存限制:C/C 512MB,其他语言 1024MB 难度:困难 分数:100 OI排行榜得分:14(0.1*分数2*难度) 描述 编写一程序,在屏幕上输出如下内容&#xff1…

[程序设计]—代理模式

[程序设计]—代理模式👳 本文章记录学习于——52.面向切面:AOP-场景模拟_哔哩哔哩_bilibili 最近闲来无事,在学习Spring的源码: 后面慢慢更新源码系列blog,希望多多关注🙏🙏 目前已经总结的b…

ue5玩家角色添加武器。切换武器位置,手上武器放到背上。演示一下人体插槽和武器的连接。仅仅演示,实际项目不是这么用的

把第一人称资源包导进来 这就是我们枪的骨骼网格体 我们找到这个骨骼 右手添加插槽 取个名字 因为武器上也有动画,所有武器单独写个蓝图类 新建一个蓝图类 BP_Weapon 把枪的蓝图拖到人的静态网格体下,成为一个部分 选中BP_Weapon的父类套接字…

如何选择适合的证件照制作软件,让您的照片制作更轻松

在当今数字化的时代,制作证件照不再需要专门前往照相馆。选择一款合适的证件照制作软件,您可以在家中轻松完成标准证件照的拍摄与制作。然而,面对市面上琳琅满目的软件,找到最适合您需求的软件并不简单。本文将为您详细介绍选择证…

数据挖掘实训:天气数据分析与机器学习模型构建

随着气候变化对各行各业的影响日益加剧,精准的天气预测已经变得尤为重要。降雨预测在日常生活中尤其关键,例如农业、交通和灾害预警等领域。本文将通过机器学习方法,利用历史天气数据预测明天是否会下雨,具体内容包括数据预处理、…

车载音频开发(二):对音频数据作音量调节

通过前一个章节打下的基础车载音频开发(一):从看懂wav开始https://blog.csdn.net/Hellomino_/article/details/140873133?fromshareblogdetail&sharetypeblogdetail&sharerId140873133&sharereferPC&sharesourceHellomino_&…