首页 > 其他分享 >opencv学习笔记(十二)

opencv学习笔记(十二)

时间:2023-06-25 17:24:23浏览次数:36  
标签:img 检测 dst cv2 十二 笔记 角点 opencv 算法

harris角点检测:

#角点检测

import cv2
import numpy as np

"""cv2.cornerHarris()
    img:数据类型为float32
    bolckSize:角点检测中指定区域的大小
    ksize:Sobel求导中使用的窗口大小,一般为3
    K:取值参数为[0.04,0.06]"""

img = cv2.imread('C:/Users/hellou/Desktop/house.jpg')
print('img.shape',img.shape)
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
gray = np.float32(gray)
dst = cv2.cornerHarris(gray, 2, 3, 0.04)
print('dst.shape',dst.shape)

img[dst>0.01*dst.max()]=[0,0,255]#若大于max值的1%就认为是角点,且用[0, 0, 255]表示,即用红色表示
cv2.imshow('dst',img)
cv2.waitKey(0)
cv2.destroyAllWindows()

res = np.hstack((img,img))
cv2.imshow('res',res)
cv2.waitKey(0)
cv2.destroyAllWindows()

除了Harris角点检测,OpenCV还提供了其他一些角点检测算法,如Shi-Tomasi角点检测(cv2.goodFeaturesToTrack())和FAST角点检测(cv2.FastFeatureDetector_create())。

  1. Harris 角点检测算法:

    • 优点:简单、快速,对旋转和尺度变化具有一定的鲁棒性。
    • 缺点:对于强烈变换的图像(如平移和仿射变换)不太鲁棒。
  2. Shi-Tomasi 角点检测算法:

    • 优点:对于角点的定位更准确,比 Harris 角点检测算法更稳定。
    • 缺点:相对较慢,无法提供角点的角度信息。
  3. FAST 角点检测算法:

    • 优点:非常快速,适用于实时应用。
    • 缺点:对于噪声敏感,可能产生大量的假阳性。
  4. BRIEF 描述符配对算法:

    • 优点:快速,适用于实时应用。
    • 缺点:对于旋转和尺度变化敏感,对光照变化不鲁棒。
  5. ORB 描述符配对算法:

    • 优点:结合了 FAST 角点检测和 BRIEF 描述符,具有较好的性能。
    • 缺点:对于光照变化和尺度变化不够鲁棒。
  6. SIFT 角点检测和描述符配对算法:

    • 优点:对于光照变化、旋转和尺度变化具有很高的鲁棒性。
    • 缺点:相对较慢,可能受到专利限制。
  7. SURF 角点检测和描述符配对算法:

    • 优点:对于光照变化、旋转和尺度变化具有较高的鲁棒性。
    • 缺点:相对较慢,可能受到专利限制。
  8. KAZE 角点检测和描述符配对算法:

    • 优点:对于光照变化、旋转和尺度变化具有较高的鲁棒性。
    • 缺点:相对较慢。

标签:img,检测,dst,cv2,十二,笔记,角点,opencv,算法
From: https://www.cnblogs.com/hellou/p/17503433.html

相关文章

  • P5JS学习笔记
    //启动方法,自动执行functionsetup(){createCanvas(400,400);}//绘画执行方法,自动执行,按设定好的帧数绘制functiondraw(){background(25);ellipse(50,50,80,80);//画圆//鼠标按下事件if(mouseIsPressed){//改变背景色fill(0);}else{fill(255......
  • C# Dapper和DapperExtensions笔记
    一、DapperDapper是一个简单的.NET对象映射器,在速度方面具有"KingofMicroORM"的头衔,几乎与使用原始的ADO.NET数据读取器一样快。ORM是一个对象关系映射器,它负责数据库和编程语言之间的映射。Dapper通过扩展IDbConnection提供一些有用的扩展方法去查询您的数据库。1.安装Dapp......
  • Rust学习笔记——基于官网和Rust语言圣经(二、猜数游戏)
    前面的helloworld项目还是太oldschool了,这样用一个猜数字的游戏来快速了解下rust语言,以及为啥cargo那么好用的原因。不要拘束新的语法点,后面都会详细介绍!2.1猜数游戏:一次猜测-本节您将学会:·let、match等方法·相关的函数·外部的crate·...猜数游戏-目标-生成一个1到10......
  • opencv学习笔记(十一)
    傅里叶变换:作用:高频:变化剧烈的灰度分量,例如边界;低频:变化缓慢的灰度分量,例如大海滤波:低通滤波器:只保留低频,会使图像模糊高通滤波器:只保留高频,会使图像细节增强opencv中主要就是cv2.dft()和cv2.idft(),输入图像需要先转换为np.floa32的格式;得到的结果中,频率为0的部分......
  • 函数对象与闭包(笔记整理)
    一、函数对象1.什么是函数对象函数对象是指:将函数作为变量保存在内存中的一种对象。就是把函数当成变量去使用,就是在函数调用阶段,将调用的函数赋一个变量名definner():print('函数名也是不加括号,其实就是一个地址')#print(inner)#<functioninnerat0x7f80180......
  • 装饰器(笔记整理)
    一、装饰器介绍为何要用装饰器Python中的装饰器是一种语法糖,可以在运行时,动态的给函数或类添加功能。装饰器本质上是一个函数,使用**@+函数名**就是可实现绑定给函数的第二个功能。将一些通用的、特定函数的功能抽象成一个装饰器,可以重复利用这些功能什么是装饰器......
  • PaddleOCR学习笔记1
    尝试使用PaddleOCR方法,如何使用自定义的模型方法,参数怎么配置,图片识别尝试简单提高识别率方法。目前仅仅只是初步学习下如何使用PaddleOCR的方法。 一,测试识别图片:1.png:正确文本内容为“哲学可以帮助辩别现代科技创新发展的方向” 二,测试代码:paddleocr_test2.py:结......
  • 笔记本输入python无提示、也无报错(不提示“不是内部或外部命令,也不是可运行的程序”)
    最近在安装Python的时候发生了很奇怪的现象(安装前):从命令行执行python并不会输出python版本信息,似乎也没有其他反应,也无报错(不提示“不是内部或外部命令,也不是可运行的程序”),再次输入命令wherepython显示C:\Users\quxw\AppData\Local\Microsoft\WindowsApps\python.exe,如下......
  • 学习笔记-Java动态代理的简单使用
    代理模式一种设计模式简单地说,在代理模式中存在三个角色用户代理被代理的对象用户调用代理,代理去调用被代理的对象以此来实现功能的增强动态代理在java中有两种实现方法JDK中的Proxy类CGLIBJDK中的Proxy类步骤实现InvocationHandler接口......
  • spring源码笔记
    Bean创建流程获取对象的BeanDefinition通过反射创建空对象填充属性调用init方法  Bean创建关键方法(按顺序)getBeandoGetBeancreateBeandoCreateBeancreateBeanInstancepopulateBean  解决循环依赖:三级缓存循环依赖原因单例,每个类只有一个对象。A引用B,B又......