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

模板匹配

膜版匹配不能匹配尺度变换和视角变换的图像
图片中查找和模板相似度最高的图像
计算相似程度最高的位置
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 npimg = 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*rhoy0 = 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.rhkb.cn/news/152766.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

redis 事物

Redis事务 一个队列中,一次性、顺序性、排他性的执行一系列命令 正常执行 放弃事务 在exec执行之前,报错,则所有命令都不会执行 在exec执行后,报错,则其它正确的指令会执行,错误的命令会抛弃 watch 监…

文化主题公园旅游景点3d全景VR交互体验加深了他们对历史文化的认知和印象

如今,沉浸式体验被广泛应用于文旅行业,尤其是在旅游演艺活动中。在许多城市,沉浸式旅游演艺活动已成为游客“必打卡”项目之一。因其独特体验和强互动性,这类演艺活动不仅吸引了外地游客,也吸引了本地观众。 随着信息化…

JuiceFS 目录配额功能设计详解

JuiceFS 在最近 v1.1 版本中加入了社区中呼声已久的目录配额功能。已发布的命令支持为目录设置配额、获取目录配额信息、列出所有目录配额等。完整的详细信息,请查阅文档。 在设计此功能时,对于它的统计准确性,实效性以及对性能的影响&#…

MySQL-1(12000字详解)

一:数据库的引入 数据库在我们以后工作中是一个非常常用的知识,数据库用来存储数据,但是有些同学可能就会疑惑了,存储数据用文件就可以了,为什么还要弄个数据库呢? 文件保存数据有以下几个缺点&#xff1…

OpenGLES:3D立方体纹理贴图

效果展示 一.概述 前几篇博文讲解了OpenGLES绘制多种3D图形,并赋予丰富的色彩,但是在这些3D图形绘制过程中,有一点还没有涉及,就是纹理贴图。 今天这篇博文我会用如下六张图片对立方体进行纹理贴图,实现六个面都是贴…

二、图像处理

待完善 一、图片缩放 import org.bytedeco.opencv.global.opencv_imgcodecs; import org.bytedeco.opencv.global.opencv_imgproc; import org.bytedeco.opencv.opencv_core.Mat; import org.bytedeco.opencv.opencv_core.Size;public class ImageResizer {public static voi…

基于SVM+TensorFlow+Django的酒店评论打分智能推荐系统——机器学习算法应用(含python工程源码)+数据集+模型(一)

目录 前言总体设计系统整体结构图系统流程图 运行环境Python环境TensorFlow 环境方法一方法二 安装其他模块安装MySQL 数据库 模块实现1. 数据预处理1)数据整合2)文本清洗3)文本分词 相关其它博客工程源代码下载其它资料下载 前言 本项目以支…

剑指offer——JZ68 二叉搜索树的最近公共祖先 解题思路与具体代码【C++】

一、题目描述与要求 二叉搜索树的最近公共祖先_牛客题霸_牛客网 (nowcoder.com) 题目描述 给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。 1.对于该题的最近的公共祖先定义:对于有根树T的两个节点p、q,最近公共祖先LCA(T,p,q)表示一个节点x&#…

阿里云轻量应用服务器月流量限制说明(部分套餐不限流量)

阿里云轻量应用服务器部分套餐限制月流量,轻量应用服务器按照套餐售卖,有的套餐限制月流量,有的不限制流量。像阿里云轻量2核2G3M带宽轻量服务器一年108元和轻量2核4G4M带宽一年297.98元12个月,这两款是不限制月流量的。阿里云百科…

充电保护芯片TP4054国产替代完全兼容DP4054DP4054H 锂电充电芯片

■产品概述 DP4054H是-款完整的采用恒定电流/恒定电压单节锂离子电池充电管理芯片。其SOT小封装和较少的外部元件数目使其成为便携式应用的理想器件,DP4054H可 以适合USB电源和适配器电源工作。 由于采用了内部PMOSFET架构,加上防倒充电路,所以不需要外…

c++桥接模式,中介者模式应用实现状态跳转

上图为例,按上述两种方式实现的模式跳转,如果在原先的三种模式之间再增加多一种模式,就会引起每个模式都会要求改变,并且逻辑混乱,因此更改模式为桥接中介者访问,将抽象和实现分离,实现之间采用…

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…

三十一、【进阶】B+树的演变过程

1、B树简单介绍 (1)介绍:B树也属于B树,是B树的变种 (2)特点:所有的数据都位于叶子节点上,叶子节点上的所有元素形成了一个单项链表 (3)图示: 2…

【虚拟机】根据已有IP获取当前网段的主机范围

虚拟机有的时候会需要自己手动分配IP,此时无论是和宿主主机通信、还是访问外网,都需要保证和宿主主机在一个网段。现在已知宿主主机的 IP 和子网掩码,需要知道宿主主机所处网段可以分配哪些IP。 假设宿主主机 IP 为172.20.10.2,子…

3.1.OpenCV技能树--二值图像处理--阈值

文章目录 1.文章内容来源2.阈值分割2.1.简单阈值分割2.1.1.简单阈值分割原理介绍2.1.2.简单阈值分割核心代码2.1.3.简单阈值分割效果展示 2.2.自适应阈值分割2.2.1.自适应阈值分割原理介绍2.2.2.自适应阈值分割核心代码2.2.3.自适应阈值分割效果展示 2.3.Otsu’s二值化/大津阈值…

unity使用UniStorm 5.1.0.unitypackage增加天气

添加天天气组件unistorm 然后添加一个player 导入包会报错,需要修改代码 using UnityEngine; using UnityEngine.PostProcessing;namespace UnityEditor.PostProcessing {[CustomPropertyDrawer(typeof(UnityEngine.PostProcessing.MinAttribute))]sealed class MinDrawer : …

Transformer预测 | Python实现基于Transformer的股票价格预测(tensorflow)

文章目录 效果一览文章概述程序设计参考资料效果一览 文章概述 Transformer预测 | Python实现基于Transformer的股票价格预测(tensorflow) 程序设计 import numpy as np import matplotlib.pyplot

【多线程案例】设计模式-单例模式

1.单例模式 什么是单例模式? 所谓单例,即单个实例。通过编码技巧约定某个类只能有唯一一个实例对象,并且提前在类里面创建好一个实例对象,把构造方法私有化,再对外提供获取这个实例对象的方法,&#xff0…

lua 中文字符的判断简介

一般在工作中会遇到中文字符的判断、截断、打码等需求,之前一直没有总结,虽然网上资料也多,今天在这里简单的总结一下。 1 .UTF-8简单描述 UTF-8 是 Unicode 的实现方式之一,其对应关系(编码规则)如下表所…

九大高效的前端测试工具与框架

前言: 在每个Web应用程序中,作为用户直接可见的应用程序外观,“前端”包括:图形化的用户界面、相应的功能、及其整体站点的可用性。我们可以毫不夸张地说:如果前端无法正常工作,您将无法“拉新”网站的潜在…