OpenCV3-Python(7)模板匹配和霍夫检测

news2024/11/24 0:02:41

模板匹配

膜版匹配不能匹配尺度变换和视角变换的图像
图片中查找和模板相似度最高的图像
计算相似程度最高的位置
res = cv.matchTemplate(img , template, method)
该方法返回一个类似灰度图的东西,如果用的相关匹配,那么亮的地方就是可能匹配上的地方
img图像template模板
method

  • 平方差匹配CV_TM_SQDIFF 模板与图像的平方差进行匹配,最好的匹配是0,匹配越差值越大
  • 相关匹配CV_TM_CCORR 模板与图像乘法进行匹配,数值越大表示匹配程度越高
  • 相关系数匹配CV_TM_CCOEFF 模板与图像相关系数匹配,1表示完美匹配,-1表示最差匹配

cv.minMaxLoc()查找最大值/最小值位置即可
该方法返回最小值,最大值,最小值位置(数列),最大值位置(数列)

img = cv.imread....
template = cv.read...
res = cv.matchTemplate(img, template, CV_TM_CCORR)
minval,maxval,minloc,maxloc = cv.minMaxLoc(res)
top_left = maxloc  # 匹配位置方框的左上角就是maxloc返回的位置,因为使用的是相关匹配
h,w = template.shape[:2]
bottom_right = (top_left[0]+w,top_left[1]+h)
cv.rectangle(img,top_left,bottom_right,(0,255,0),2) #绘制方框 绿色线框宽度为2 

霍夫变换

用于提取直线和圆的形状

霍夫直线检测

image.png
image.png
cv.HoughLines(edges,rho,theta)
edges一般为灰度且进行过canny边缘化的灰度图像

  1. rho:以像素为单位的距离精度。
  2. double类型的theta:以弧度为单位的角度精度

返回的是一个array型数组,每一个元素都是一组rho,theta

import matplotlib.pyplot as plt
import cv2 as cv
import numpy as np

img = cv.imread("/Users/liruiyan/Downloads/IMG_9534.jpg")
plt.subplot(2, 2, 1)
plt.title("origin")
plt.axis("off")
plt.imshow(img[:, :, ::-1])

gray = cv.cvtColor(img, cv.COLOR_BGR2GRAY)
plt.subplot(2, 2, 2)
plt.title("convert_gray")
plt.axis("off")
plt.imshow(gray, cmap=plt.cm.gray)

edges = cv.Canny(gray, 50, 150)
plt.subplot(2, 2, 3)
plt.axis("off")
plt.title("canny_edges")
plt.imshow(gray, cmap=plt.cm.gray)


lines = cv.HoughLines(edges, 0.6, np.pi/180, 250)
# 返回的lines是一个关于rho,theta的一个array,每一个[rho,theta]都是霍夫空间内一个关于直线的描述
for line in lines:
    rho, theta = line[0]
    a = np.cos(theta)
    b = np.sin(theta)
    x0 = a*rho
    y0 = b*rho
    
    # 计算延伸的直线起点和终点
    x1 = int(x0 + 10000*(-b))
    x2 = int(x0 - 10000*(-b))
    y1 = int(y0 + 10000 * a)
    y2 = int(y0 - 10000 * a)
    cv.line(img, (x1, y1), (x2, y2), (0, 255, 0), 10)

plt.subplot(2, 2, 4)
plt.title("result")
plt.imshow(img[:, :, ::-1])
plt.axis("off")
plt.show()

plt.imshow(img[:, :, ::-1])
plt.figure(figsize=(10, 8), dpi=200)
plt.show()



霍夫圆检测

霍夫圆对噪声比较敏感,要进行中值滤波
cv.HoughCircles(img, method ,dp, minDist, param1, param2, minRadius, maxRadius)
img:输入图像,灰度图像
method :霍夫圆检测算法:CV_HOUGH_GRADIENT
dp:霍夫空间分辨率,1表示和原图一致,2表示为原图一半
minDist:圆心之间最小距离 ,两圆心如果小于该值,视为同一个圆
param1
param2
minRadius,maxRadius:要检测的圆半径的最小值和最大值

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【高等の数学】e^-3x的一阶导数

一、直接公式法 对于指数函数 f(x) e^g(x),其中 g(x) 是关于 x 的函数,导数 f(x) 可以表示为 f(x) g(x) * e^g(x)。 在我们的情况下,g(x) -3x。 我们先求导 g(x) (-3x) -3。因此,我们有 g(x) -3。 现…

基于OpenCV设计的流媒体播放器(RTSP、RTMP)

一、前言 随着互联网的普及和发展,流媒体技术已成为日常生活中不可或缺的一部分。流媒体播放器作为流媒体技术的重要组成部分,其性能和功能直接影响到用户的观影体验。本文介绍使用OpenCV和Qt设计一款流媒体播放器,专门用于播放直播视频流,例如RTSP、RTMP。该播放器只播放…

【深度学习】UniControl 一个统一的扩散模型用于可控的野外视觉生成

论文:https://arxiv.org/abs/2305.11147 代码:https://github.com/salesforce/UniControl#data-preparation docker快速部署:https://qq742971636.blog.csdn.net/article/details/133129146 文章目录 AbstractIntroductionRelated WorksUniCo…

【微服务】八. 统一网关gateway

8.1 网关作用介绍 网关功能: 身份认证和权限校验服务路由、负载均衡请求限流 网关的技术实现 在SpringCloud中网关的实现包括两种: gatewayzuul Zuul是基于Servlet的实现,属于阻塞式编程。而SpringCloudGateway则是基于Spring5中提供的Web…

计算机竞赛 题目:基于深度学习的中文对话问答机器人

文章目录 0 简介1 项目架构2 项目的主要过程2.1 数据清洗、预处理2.2 分桶2.3 训练 3 项目的整体结构4 重要的API4.1 LSTM cells部分:4.2 损失函数:4.3 搭建seq2seq框架:4.4 测试部分:4.5 评价NLP测试效果:4.6 梯度截断…

strapi系列-如何去掉接口auth校验?秒解决接口401问题

配置了strapi接口settings-user-permissions的roles接口为public,但是访问接口依然是401该怎么处理?strapi接口401该怎么处理?如何去掉接口auth校验? 问题解决 必须保证以下几点 权限检查,api接口 手动开放 接口权限已经进行配…

如何对比github中不同commits的区别

有时候想要对比跨度几十个commits之前的代码区别,想直接使用github的用户界面。可以直接在官网操作。 示例 首先要创建一个就commit的branch。进入该旧的commit,然后输入branch名字即可。 然后在项目网址后面加上compare即可对比旧的branch和新的bran…

TensorFlow案例学习:对服装图像进行分类

前言 官方为我们提供了一个 对服装图像进行分类 的案例,方便我们快速学习 学习 预处理数据 案例中有下面这段代码 # 预处理数据,检查训练集中的第一个图像可以看到像素值处于0~255之间 plt.figure() # 创建图像窗口 plt.imshow(train_images[0]) # …

人工智能辅导程序 Mr. Ranedeer AI Tutor

人工智能技术正在不断发展,并在各个领域发挥着越来越重要的作用。在教育领域,人工智能也得到了广泛的应用,其中包括人工智能辅导程序。 Mr. Ranedeer AI Tutor 是一个开源的人工智能辅导程序,使用 OpenAI 的 GPT-4 语言模型来提供…

数据结构 第3章作业 栈和队列 西安石油大学

第3章 栈和队列 有5个元素,其入栈次序为:A,B,C,D,E,在各种可能的出栈次序中,以元素C、D最先出栈(即C第一个且D第二个出栈)的次序有哪几个? 3个:CDEBA;CDBEA;CDBAE 此题考查的知识…

用ChatGPT做数据分析,提升10倍工作效率

目录 写报告分析框架报告框架指标体系设计 Excel 写报告 分析框架 拿到一个专题不知道怎么做?没关系,用ChatGPT列一下框架。 以上分析框架挺像那么回事,如果没思路的话,问问ChatGPT能起到找灵感的作用。 报告框架 报告的框架…

Django开发之进阶篇

Django进阶篇 一、Django学习之模板二、Django学习之中间件默认中间件自定义中间件 三、Django学习之ORM定义模型类生成数据库表操作数据库添加查询修改删除 一、Django学习之模板 在 Django 中,模板(Template)是用于生成动态 HTML&#xff…

Jmeter常用断言之断言持续时间简介

Duration Assertion:断言持续时间。 断言持续时间通常用于做性能测试,一般用于检查HTTP请求的响应时间是否超过预期值。而这个响应时间是性能测试中常关注的一个性能指标。 一、添加断言方式 根据需要可在【测试计划】、【线程组】、【线程请求】下添加…

VMware Horizon 8 运维系列(三)win10设置共享桌面图标

前言 在win10模板上用管理员帐号安装好软件之后,有的软件快捷图标不会出现在桌面上,有的即使有在桌面上出现,但是当发布云桌面池后,客户端登录的都是不同的域用户,当不同的用户登录系统的时候,很多软件快捷…

端粒/端粒酶生信切入点,6+端粒酶+泛癌+甲基化+实验。

今天给同学们分享一篇端粒酶泛癌甲基化实验的生信文章“Genomic, epigenomic, and transcriptomic signatures for telomerase complex components: a pan‐cancer analysis”,这篇文章于2022年10月31日发表在Mol Oncol期刊上,影响因子为6.6。 激活端粒酶…

提高战斗力+分享游戏干货,带你解锁无敌吃鸡技巧!

大家好!作为吃鸡行家,我今天要和大家聊一些热门话题,包括如何提高战斗力和分享游戏干货,以及吃鸡作图、装备查询等技巧。 首先,让我们来谈谈提高战斗力。在绝地求生(PUBG)等吃鸡游戏中&#xff…

Flink---11、状态管理(按键分区状态(值状态、列表状态、Map状态、归约状态、聚合状态)算子状态(列表状态、广播状态))

星光下的赶路人star的个人主页 这世上唯一扛得住岁月摧残的就是才华 文章目录 1、状态管理1.1 Flink中的状态1.1.1 概述1.1.2 状态的分类 1.2 按键分区状态(Keyed State)1.2.1 值状态(ValueState)1.2.2 列表状态(ListS…

H5逆向之远程RPC

引言前一讲说过H5 怎么去抓包,逆向分析。其中说到RPC。这一节详细讲一下。有一种情况,JS 比较复杂,混淆的厉害。 这个时候就用到RPC。原理就是,hook web 浏览器,直接调用js 里边的方法。 Node 服务。为什么用到Node 服务,先来看下这架构 Node 对外提供各种接口,外部可以…

【算法分析与设计】回溯法(下)

目录 一、符号三角形问题二、N皇后问题三、0-1背包问题四、最大团问题4.1 进一步改进 五、图的m着色问题5.1 算法设计六、旅行售货员问题七、连续邮资问题八、回溯法效率分析九、重排原理十、回溯法的效率分析十一、Monte Carlo方法附一、四后问题的搜索树附二、随机选择路径附…

竞赛选题 深度学习 python opencv 实现人脸年龄性别识别

文章目录 0 前言1 项目课题介绍2 关键技术2.1 卷积神经网络2.2 卷积层2.3 池化层2.4 激活函数:2.5 全连接层 3 使用tensorflow中keras模块实现卷积神经网络4 Keras介绍4.1 Keras深度学习模型4.2 Keras中重要的预定义对象4.3 Keras的网络层构造 5 数据集处理训练5.1 …