1 原理(略)

2.1 OpenCV中的Harris角点检测

OpenCV中的函数cv2.cornerHarris()可以用来进行角点检测。参数如下:

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

代码演示:

import cv2
import numpy as npimg = cv2.imread('xiangqi.jpg')
gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
gray = np.float32(gray)#输入图像必须是float32,最后一个参数在0.04到0.05
dst = cv2.cornerHarris(gray,2,3,0.04)
dst = cv2.dilate(dst,None)# Threshold for an optimal value, it may vary depending on the image.
img [dst>0.01*dst.max()] = [0,0,255]
cv2.imshow('dst',img)
if cv2.waitKey(0) == 27:cv2.destroyAllWindows()

2.2 亚像素级精确度的角点

有时我们需要最大精度的角点检测。OpenCV 为我们提供了函数 cv2.cornerSubPix(),它可以提供亚像素级别的角点检测。下面是一个例子。首先我们要找到 Harris角点,然后将角点的重心传给这个函数进行修正。Harris 角点用红色像素标出,绿色像素是修正后的像素。在使用这个函数是我们要定义一个迭代停止条件。当迭代次数达到或者精度条件满足后迭代就会停止。我们同样需要定义进行角点搜索的邻域大小。

import cv2
import numpy as np
# find Harris corners
img = cv2.imread('xiangqi.jpg')
gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
gray = np.float32(gray)
dst = cv2.cornerHarris(gray,2,3,0.04)
dst = cv2.dilate(dst,None)
ret,dst = cv2.threshold(dst,0.01*dst.max(),255,0)
dst = np.uint8(dst)# find centroids
#connectedComponentsWithStats(InputArray image, OutputArray labels, OutputArray stats,
#OutputArray centroids, int connectivity=8, int ltype=CV_32S)
ret,labels,stats,centroids = cv2.connectedComponentsWithStats(dst)# define the criteria to stop and refine the corners
criteria = (cv2.TERM_CRITERIA_EPS + cv2.TERM_CRITERIA_MAX_ITER,100,0.001)#Python: cv2.cornerSubPix(image, corners, winSize, zeroZone, criteria)
#zeroZone – Half of the size of the dead region in the middle of the search zone
#over which the summation in the formula below is not done. It is used sometimes
# to avoid possible singularities of the autocorrelation matrix. The value of (-1,-1)
# indicates that there is no such a size.
# 返回值由角点坐标组成的一个数组(而非图像)
corners = cv2.cornerSubPix(gray,np.float32(centroids),(5,5),(-1,-1),criteria)res = np.hstack((centroids,corners))
#np.int0 可以用来省略小数点后面的数字(非四㮼五入)。
res = np.int0(res)
img[res[:,1],res[:,0]] = [0,0,255]
img[res[:,3],res[:,2]] = [0,2555,0]
cv2.imshow('111',img)
cv2.waitKey(0)

结果如下,为了方便查看我们对角点的部分进行了放大:

OpenCV-Python官方教程-22-Harris角点检测相关推荐

  1. OpenCV与图像处理学习十三——Harris角点检测(含代码)

    OpenCV与图像处理学习十三--Harris角点检测(含代码) 一.角点的概念 二.Harris角点检测的实现过程 三.Harris代码应用 一.角点的概念 角点: 在现实世界中, 角点对应于物体的 ...

  2. OpenCV入门学习笔记之Harris角点检测与SIFT特征匹配算法

    1. 写在前面 这篇文章整理两个图像处理中非常重要的算法,一个是Harris角点检测算法,另一个是SIFT特征匹配算法,这两个算法本质上还是去找图像里面的关键特征点,帮助我们后续更好的理解图像以及做各 ...

  3. opencv (五十一)Harris角点检测

    小白学视觉,笔记,扩展 #include <opencv2/opencv.hpp> #include<iostream>using namespace cv; using na ...

  4. cv2.cornerHarris()详解 python+OpenCV 中的 Harris 角点检测

    原文作者:aircraft 原文地址:https://www.cnblogs.com/DOMLX/p/8763369.html 参考文献----------OpenCV-Python-Toturial ...

  5. Harris角点检测python实现及基于opencv实现

    写在前面: 黄宁然, 七月,骄阳似火. 参考文献镇楼: [1]袁志聪,基于harris特征的点云配准方法研究 [2]高亭,基于改进Harris角点检测的印刷体文档图像检索技术 [3]景庆阳,基于har ...

  6. Python+OpenCV:图像Harris角点检测(Harris Corner Detection)

    Python+OpenCV:图像Harris角点检测(Harris Corner Detection) 理论 corners are regions in the image with large v ...

  7. 基于Python手动实现Harris角点检测

    最近在上数字图像处理课程,需要使用Python手动编写Harris角点检测算法,但是网上几乎没有找到手动编写的,只能手敲. 同时作为自己的第一篇博客,在这里记录一下. 一.Harris角点检测 原理( ...

  8. Python计算机视觉——Harris角点检测

    Python计算机视觉--Harris角点检测 文章目录 Python计算机视觉--Harris角点检测 写在前面 1 Harris角点检测基本思想 2 Harris角点检测公式推导 3 实验分析 写 ...

  9. OpenCV角点检测之Harris角点检测

    本篇文章中,我们一起探讨了OpenCV中Harris角点检测相关的知识点,学习了OpenCV中实现Harris角点检测的cornerHarris函数的使用方法.此博文一共有两个配套的麻雀虽小但五脏俱全 ...

  10. OpenCV之feature2d 模块. 2D特征框架(1)Harris 角点检测子 Shi-Tomasi角点检测子 定制化创建角点检测子 亚像素级的角点检测 特征点检测

    Harris 角点检测子 目标 本教程中我们将涉及: 有哪些特征?它们有什么用? 使用函数 cornerHarris 通过 Harris-Stephens方法检测角点. 理论 有哪些特征? 在计算机视 ...

最新文章

  1. 全网仅此一篇:工业级压力传感器设计及实现(华大半导体HC32L136)
  2. 剑指offer 算法(栈和队列 查找和排序)
  3. java snack_JSONPath小试牛刀之Snack3
  4. 2018刑侦推理 java_2018年刑侦科目推理试题
  5. Windows CE(C#)嵌入式应用开发pdf
  6. 趣说技术 | 用MQ 能完全替代 RPC 调用?
  7. python 近期用到的基础知识汇总(主要是skimage的相关矩阵变化函数)(二)
  8. 【回文串7】LeetCode 234. Palindrome Linked List
  9. 苹果cms用php几,苹果CMS用的B站播放器
  10. html rgb 颜色转换,将RGBA颜色转换为HTML颜色代码
  11. How To Clone Scrypt Based Altcoins for Fun and Profit
  12. Python语言程序设计前言
  13. 第015讲: 跟王家林学习从1000个代码案例中学习人工智能和大数据实战第015讲:Scala中Tuple源码剖析及代码实践
  14. 我用计算机写作文,教学设计:我用计算机写作文
  15. 程序员吃饭段子Java吃完就走_爆笑段子:一朋友是个程序员,有一次和他吃饭,他愁眉苦脸的说...
  16. How To JUST DO IT
  17. 如何用Windows自带画图工具将图片设置成透明背景
  18. parsec(The parsec benchmark suit )使用教程
  19. 计算机信息采集方式有哪些,数据监控都有哪些信息采集渠道
  20. Git命令详解及工作实用流程

热门文章

  1. 中国邮政储蓄银行总行2023信息科技招聘考试【暑期实习】
  2. 5.0、软件测试——边界值分析法
  3. VirtualBox新建虚拟机
  4. 神舟战神笔记本(Z7M-KP7Z)双系统安装ubuntu 16.04遇到的坑及解决方法
  5. layui 附件上传、预览、删除、下载
  6. vue路由传参那些事
  7. Linux 6安装kde桌面,centos6.3光盘安装KDE桌面环境
  8. 考研英语做题技巧(个人总结)
  9. uniapp showModal与bind(this)
  10. 苏宁关键词搜索API接口(关键词搜索商品销量接口)