当前位置: 首页 > 编程笔记 >

OpenCV哈里斯(Harris)角点检测的实现

宗冷勋
2023-03-14
本文向大家介绍OpenCV哈里斯(Harris)角点检测的实现,包括了OpenCV哈里斯(Harris)角点检测的实现的使用技巧和注意事项,需要的朋友参考一下

环境

pip install opencv-python==3.4.2.16
 
pip install opencv-contrib-python==3.4.2.16

理论

克里斯·哈里斯Chris Harris)和迈克·史蒂芬斯(Mike Stephens)在1988年的论文《组合式拐角和边缘检测器》中做了一次尝试找到这些拐角的尝试,所以现在将其称为哈里斯拐角检测器。

函数:cv2.cornerHarris()cv2.cornerSubPix()

示例代码

import cv2
import numpy as np
 
filename = 'molecule.png'
img = cv2.imread(filename)
gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
 
gray = np.float32(gray)
dst = cv2.cornerHarris(gray,2,3,0.04)
 
#result is dilated for marking the corners, not important
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) & 0xff == 27:
  cv2.destroyAllWindows()

原图

输出图

SubPixel精度的角落

import cv2
import numpy as np
 
filename = 'molecule.png'
img = cv2.imread(filename)
gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
 
# find Harris corners
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
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)
corners = cv2.cornerSubPix(gray,np.float32(centroids),(5,5),(-1,-1),criteria)
 
# Now draw them
res = np.hstack((centroids,corners))
res = np.int0(res)
img[res[:,1],res[:,0]]=[0,0,255]
img[res[:,3],res[:,2]] = [0,255,0]
 
cv2.imwrite('subpixel5.png',img)

输出图

参考

https://opencv-python-tutroals.readthedocs.io/en/latest/py_tutorials/py_feature2d/py_features_harris/py_features_harris.html#harris-corners

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持小牛知识库。

 类似资料:
  • 目标 在这一章中, 我们将会理解 Harris 角点检测背后的概念 我们会了解 cv2.cornerHarris() 和 cv2.cornerSubPix() 函数的使用方法 理论基础 上一章中,我们已经看到边角是在图像中各个方向上亮度都变化非常大的区域。试图找到这些边角的一个早期尝试由 Chris Harris 和 Mike Stephens 在它们1988年的的论文《A Combined Co

  • 目标 在本章中, 我们将了解"Harris Corner Detection”背后的概念。 我们将看到以下函数:cv.cornerHarris(),cv.cornerSubPix() 理论 在上一章中,我们看到角是图像中各个方向上强度变化很大的区域。Chris Harris和Mike Stephens在1988年的论文《组合式拐角和边缘检测器》中做了一次尝试找到这些拐角的尝试,所以现在将其称为哈里

  • 我有一个盒子的图像。我试图检测角点并从圆圈中标记这些角点。我正在为此使用以下代码:

  • 本文向大家介绍opencv实现矩形检测,包括了opencv实现矩形检测的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了opencv实现矩形检测的具体代码,供大家参考,具体内容如下 效果: 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持呐喊教程。

  • 目标 在这一章中: 我们将理解 FAST 算法的基础 我们将使用 OpenCV 中的 FAST 算法来找出角点 理论基础 我们已经看过了几个特征检测器,而且其中许多效果相当好,但是从实时应用程序的角度看,他们还不够快,一个最好的例子就是SLAM^3(即时定位与地图构建),在这种情况下,机器人只有有限的计算资源。 作为这种情况的一种解决方案,FAST(Features from accelerate

  • 本文向大家介绍OpenCV实现人脸检测功能,包括了OpenCV实现人脸检测功能的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了OpenCV实现人脸检测功能的具体代码,供大家参考,具体内容如下 1、HAAR级联检测 2、 DNN人脸检测 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持呐喊教程。

  • 目标 在本章中, 我们将了解FAST算法的基础知识。 我们将使用OpenCV功能对FAST算法进行探索。 理论 我们看到了几个特征检测器,其中很多真的很棒。但是,从实时应用程序的角度来看,它们不够快。最好的例子是计算资源有限的SLAM(同时定位和制图)移动机器人 作为对此的解决方案,Edward Rosten和Tom Drummond在2006年的论文“用于高速拐角检测的机器学习”中提出了FAST

  • 我们正在考虑使用strim zi Kafka-Bridge(https://strim zi . io/docs/Bridge/latest/# proc-creating-Kafka-Bridge-consumer-Bridge)作为现有Kafka集群的HTTP(s)网关。 留档提到使用任意名称创建消费者以参与消费者组。这些名称随后可用于消费消息、查找或同步偏移量、… 问题是:我的假设是否正确?