opencv-Harris 角点检测

Harris 角点检测是一种用于检测图像中角点的方法,它通过分析图像中像素灰度值的变化来识别角点。这个方法基于角点的定义:在某个方向上移动图像,角点会导致图像中某些方向上的灰度变化很大。

在 OpenCV 中,可以使用 cv2.cornerHarris 函数来实现 Harris 角点检测。基本语法如下:

dst = cv2.cornerHarris(src, blockSize, ksize, k)

参数说明:

  • src: 输入图像,单通道灰度图像。
  • blockSize: 角点检测中指定的邻域大小。
  • ksize: Sobel 求导中使用的窗口大小。
  • k: Harris 角点检测中的自由参数,通常在 0.04 到 0.06 之间。

以下是一个简单的示例,演示如何使用 Harris 角点检测:

import cv2
import numpy as np
import matplotlib.pyplot as plt

# 读取图像并转换为灰度
img = cv2.imread(r"C:\Users\mzd\Desktop\opencv\images.jpg")
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

# 计算 Harris 角点
dst = cv2.cornerHarris(gray, blockSize=2, ksize=3, k=0.04)

# 变换结果的数据格式
dst = cv2.dilate(dst, None)

# 通过阈值获取角点
threshold = 0.01 * dst.max()
img[dst > threshold] = [0, 0, 255]  # 将角点标记为红色

# 显示原图和标记了角点的图像
plt.figure(figsize=(10, 5))

plt.subplot(121), plt.imshow(cv2.cvtColor(img, cv2.COLOR_BGR2RGB))
plt.title('Original Image with Harris Corners'), plt.axis('off')

plt.subplot(122), plt.imshow(dst, cmap='gray')
plt.title('Harris Corners'), plt.axis('off')

plt.show()

在这里插入图片描述

在这个示例中,我们首先读取了一幅图像,并将其转换为灰度图像。然后,使用 cv2.cornerHarris 函数计算 Harris 角点,并通过阈值将角点标记在图像上。最后,通过 Matplotlib 显示原图和标记了角点的图像。 Harris 角点检测通常用于特征点的提取,例如在图像匹配和目标追踪中。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

AI自修室

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值