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. [源码解析] 模型并行分布式训练 Megatron (4) --- 如何设置各种并行

    [源码解析] 模型并行分布式训练 Megatron (4) --- 如何设置各种并行 目录 [源码解析] 模型并行分布式训练 Megatron (4) --- 如何设置各种并行 0x00 摘要 0x0 ...

  2. LVS+Keepalived群集

    LVS+Keepalived群集 目录 LVS+Keepalived群集 一.Keepalived实现原理 1. 单服务器的风险 2. Keepalived工具 3. Keepalived解决单点故障 ...

  3. linux_5

    1 简述osi七层模型和TCP/IP五层模型 2 总结描述TCP三次握手四次挥手 TCP是一种可靠的,面向连接的全双工传输层协议. TCP连接的建立是一个三次握手的过程.如图所示: 第一次握手:主机A ...

  4. 6、Linux基础--文件类型、属性信息、创建用户与用户组

    笔记 1.晨考 1.解析映射文件 /etc/hosts 2.磁盘挂载文件 /etc/fstab 3.设置开机自启动脚本的步骤 1.修改/etc/rc.local 2.设置可执行权限 chmod +x ...

  5. 『无为则无心』Python基础 — 44、对文件和文件夹的操作

    目录 1.os模块介绍 2.查看os模块相关文档 3.os模块常用方法 (1)文件重命名 (2)删除文件 (3)创建文件夹 (4)删除文件夹 (5)获取当前目录 (6)改变默认目录 (7)获取目录列表 ...

  6. MyBatis分页插件PageHelper使用方法

    1.导入相关依赖坐标 <!-- MyBatis分页插件 --> <dependency> <groupId>com.github.pagehelper</gr ...

  7. Remix本地化,加载本地合约文件,本地链接Remix

    智能合约IDE,在线的比较卡,而且切换网络面临文件丢失的风险,选择本地搭建Solidity本地编辑环境,Remix-IDE + Remixd组合,加载本地合约代码.这里用到两个工具: Remix ID ...

  8. ftp用的是tcp还是udp_如何通俗地解释TCP和UDP协议和HTTP、FTP、SMTP等协议之间的区别

    HTTP协议 老王喜欢看岛国小片,时常泡在论坛上和网友交流最新资讯,老王是通过浏览器浏览网页的,而浏览器是借助HTTP协议与论坛服务器沟通交流. FTP协议 老王购买了该网站的会员,可以无限制下载高清 ...

  9. Consul学习笔记(详细)

    常见的注册中心: Netflix Eureka Alibaba Nacos HashiCorp Consul Apache Zookeeper CoreOS Etcd CNCF CoreDNS 介绍 ...

  10. WPS:查看隐藏文字与分页符……

    文件->选项->视图