Harris角点检测

  • 理解

    内部点:蓝框所示,无论滑动窗口水平滑动还是竖直滑动,框内像素值都不会发生大的变化

    边界点:黑框所示,滑动窗口沿着某一个方向滑动框内像素点不会发生大的改变,但是沿着另一个方向滑动,就会发生大的改变

    角点:红框所示,滑动窗口沿着两个方向滑动,框内像素点都会发生大的变化

    两个方向上的特性值分别为λ1,λ2,

    当 λ1,λ2,都很小, |R|也很小时,表示是内部区域

    当 λ1,λ2,一个大一个小,R<0时,表示是边界区域

    当 λ1,λ2,都很大,R也很大时,表示是角点

  • 函数

    Open 中的函数 cv2.cornerHarris() 可以用来进行角点检测

    参数
    • img - 数据类型为 float32 的输入图像。
    • blockSize - 角点检测中要考虑的领域大小。
    • ksize - Sobel 求导中使用的窗口大小
    • k - Harris 角点检测方程中的自由参数,取值参数为 [0,04,0.06].

    返回值

    R值构成的灰度图像,灰度图像坐标会与原图像对应,R值就是角点分数当R值很大的时候 就可以认为这个点是一个角点

  • 步骤

1.图片转化为灰度图

2. cv2.cornerHarris() 处理的是float32,注意类型转换

3.利用 cv2.cornerHarris()得到R集合

4.把R中大于某个阈值的判定为角点,

img[dst>0.01*dst.max()] = [0,0,255]

这里R矩阵是一个很大的值,取里面最大的R,只要dst里面的值大于0.01R的最大值
那么此时这个dst的R值也是很大的 可以判定他为角点
import cv2
import numpy as np def cv_show(name,img):
cv2.imshow(name,img)
cv2.waitKey(0)
cv2.destroyAllWindows() img = cv2.imread('chess.jpg')
gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
gray = np.float32(gray)
dst = cv2.cornerHarris(gray,2,3,0.04) img[dst>0.01*dst.max()] = [0,0,255]
cv_show('img',img)

OpenCv基础_四的更多相关文章

  1. OpenCv基础_三

    轮廓检测 图像金字塔 上采样,图像变大一倍,矩阵用0填充 img = cv2.imread('1,jpg') cv_show('img',img) up = cv2.pyrUp(img) cv_sho ...

  2. OpenCV基础_二

    阈值和平滑处理 cv2.threshold()二值化函数 ret,thresh = cv2.threshold(src, thresh, maxval, type[, dst]) 参数 src:所要进 ...

  3. OpenCv基础_一

    图片的读取和展示 import cv2 img = cv2.imread('1.jpg') cv2.imshow('img',img) cv2.waitKey(0) cv2.destroyAllWin ...

  4. Android基础测试题(四)

    看了前两道题大家有没有发现,测试题少了(一),大家猜猜测试题(一)是什么? Android基础测试题(四): 需求: 建一个方法,格式化输出2016-11-14 10:15:26格式的当前时间,然后截 ...

  5. Bootstrap<基础十四> 按钮下拉菜单

    使用 Bootstrap class 向按钮添加下拉菜单.如需向按钮添加下拉菜单,只需要简单地在在一个 .btn-group 中放置按钮和下拉菜单即可.也可以使用 <span class=&qu ...

  6. MySQL基础(四)——索引

    MySQL基础(四)--索引

  7. Python 基础语法(四)

    Python 基础语法(四) --------------------------------------------接 Python 基础语法(三)------------------------- ...

  8. Linux操作系统基础(四)保护模式内存管理(2)【转】

    转自:http://blog.csdn.net/rosetta/article/details/8570681 Linux操作系统基础(四)保护模式内存管理(2) 转载请注明出处:http://blo ...

  9. Java语言基础(四)

    Java语言基础(四) 一.基本数据类型(8) byte  8位  使用较少,一般用于网络传输: -128-+127 short  16位 不常用 -32768-+32767 int  32位 常用  ...

随机推荐

  1. 解决OpenOCD烧录STM32失败, 无法通过SWD连接的问题

    OpenOCD烧录STM32失败的问题 Linux下使用 OpenOCD 烧录 STM32, 出现了 Error: init mode failed (unable to connect to the ...

  2. Anacanda 与 jupyter 的使用

    内容概要 爬虫开发环境搭建 Anacanda 开发环境 jupyter jupyter 的基本使用 启动 基本使用 快捷键的使用 内容详细 一.爬虫开发环境搭建 1.Anacanda 开发环境 Ana ...

  3. Linux海王 之 pdsh (并行管理工具)

    文章目录 安装 使用 示例 -w 指定主机 -l 指定用户 -g指定用户组 主机列表 交互式界面 pdsh是一个多线程远程shell客户机,它在多个远程主机上并行执行命令 pdsh可以使用几种不同的远 ...

  4. mysql 查询附近N公里内数据

    mysql 查询一个地点(经纬度) 附近N公里内的数据.(根据一个地点的经纬度查询这个地点方圆几公里内的数据)1.创建测试表 CREATE TABLE `location` ( `id` int(10 ...

  5. spring boot全局配置文件优先级

    前两篇介绍的application配置文件,即为spring boot全局配置文件.那么spring boot加载配置文件的时候,怎么确定加载哪个目录下哪个文件呢? spring boot默认的配置文 ...

  6. 中国首个进入谷歌编程之夏(GSoC)的开源项目: Casbin, 2022 年预选生招募!

    Casbin 明日之星预选生计划-Talent for Casbin 2022 "Casbin 明日之星预选生计划-Talent for Casbin 2022"是什么? &quo ...

  7. 用eclipse写jsp报以下错误

    <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> <%@ tag ...

  8. Msftables之Linux NFS共享目录配置漏洞

    实验目的 1.了解Metasploitables靶机系统漏洞: 2.学习使用Metasploit. 实验原理 msftables之利用Linux NFS共享目录配置漏洞渗透. 实验内容 msftabl ...

  9. MyEclipse 启动tomcat本地服务,debug模式,代码一直不同步

    今天写代码遇到一个问题,上午还能正常运行的代码,在eclipse中显示正常,但在游览器中就出现了差异,在网上找了很多方法: 1.add and remove项目,清理tomcat部署目录下的项目,清理 ...

  10. Python的介绍与主要方向

    1.1 编程与编程语言 python是一门编程语言,作为学习python的开始,需要事先搞明白:编程的目的是什么?什么是编程语言?什么是编程? 编程的目的: 计算机的发明,是为了用机器取代/解放人力, ...