Opencv Harris角点检测第一步

OpenCV 中的 Harris 角点检测是一种图像处理技术,它可以通过对图像进行 Harris 角点检测来检测图像中的角点。在 OpenCV 中,可以使用 cv2.cornerHarris() 函数来实现 Harris 角点检测。

使用 cv2.cornerHarris() 函数的基本语法如下:

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

其中,src 是输入图像,blockSize 是角点检测中使用的邻域大小,ksize 是 Sobel 滤波器的大小,k 是 Harris 角点检测中的自由参数。

以下是两个示例说明:

示例一:使用 Harris 角点检测检测图像中的角点

要使用 Harris 角点检测检测图像中的角点,可以使用以下代码:

import cv2
import numpy as np

# 读取图像
img = cv2.imread('image.jpg')

# 转换颜色空间
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

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

# 标记角点
dst = cv2.dilate(dst, None)
img[dst > 0.01 * dst.max()] = [0, 0, 255]

# 显示图像
cv2.imshow('image', img)
cv2.waitKey()
cv2.destroyAllWindows()

这将读取名为 image.jpg 的图像,并使用 Harris 角点检测检测图像中的角点。最终结果将在窗口中。

示例二:使用 Harris 角点检测进行图像拼接

要使用 Harris 角点检测进行图像拼接,可以使用以下代码:

import cv2
import numpy as np

# 读取图像
img1 = cv2.imread('image1.jpg')
img2 = cv2.imread('image2.jpg')

# 转换颜色空间
gray1 = cv2.cvtColor(img1, cv2.COLOR_BGR2GRAY)
gray2 = cv2.cvtColor(img2, cv2.COLOR_BGR2GRAY)

# 计算 Harris 角点
dst1 = cv2.cornerHarris(gray1, 2, 3, 0.04)
dst2 = cv2.cornerHarris(gray2, 2, 3, 0.04)

# 标记角点
dst1 = cv2.dilate(dst1, None)
dst2 = cv2.dilate(dst2, None)
img1[dst1 > 0.01 * dst1.max()] = [0, 0, 255]
img2[dst2 > 0.01 * dst2.max()] = [0, 0, 255]

# 寻找匹配点
kp1 = cv2.KeyPoint_convert(np.argwhere(dst1 > 0.01 * dst1.max()))
kp2 = cv2.KeyPoint_convert(np.argwhere(dst2 > 0.01 * dst2.max()))
bf = cv2.BFMatcher(cv2.NORM_L2, crossCheck=True)
matches = bf.match(gray1, gray2)

# 绘制匹配点
matches = sorted(matches, key=lambda x: x.distance)
img3 = cv2.drawMatches(img1, kp1, img2, kp2, matches[:10], None, flags=cv2.DrawMatchesFlags_NOT_DRAW_SINGLE_POINTS)

# 显示图像
cv2.imshow('image', img3)
cv2.waitKey()
cv2.destroyAllWindows()

这将读取名为 image1.jpg 和 image2.jpg 的两张图像,并使用 Harris 角点检测进行图像拼接。最终结果将在窗口中。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Opencv Harris角点检测第一步 - Python技术站

(0)
上一篇 2023年5月11日
下一篇 2023年5月11日

相关文章

  • Opencv 使用零均值归一化交叉相关进行模式匹配

    以下是关于Opencv 使用零均值归一化交叉相关进行模式匹配的详细讲解。 Opencv 使用零均值归一化交叉相关进行模式匹配基本原理 Opencv 零均值归一化交叉相关进行模式匹配是一种常用的图像处理技术,可以用于在图像中查找指定的模式。具体实现方法包括: cv2.matchTemplate 函数:用于对图像进行模板匹配操作。 cv2.minMaxLoc 函…

    python 2023年5月10日
    00
  • Opencv Canny边缘检测 边缘强度

    Opencv Canny边缘检测边缘强度的完整攻略 Opencv Canny边缘检测是一种常用的图像处理技术,可以用于图像的边缘检测、特征提取等。本文将详细讲解Opencv Canny边缘检测边缘强度的完整攻略,包括基本原理、方法和两个示例说明。 Opencv Canny边缘检测的基本原理 Opencv Canny边缘检测是一种基于梯度变化的边缘检测算法,通…

    python 2023年5月10日
    00
  • Opencv 直方图归一化

    以下是关于Opencv直方图归一化的详细攻略。 Opencv直方图归一化基本原理 Opencv直方图归一化是一种常用的图像处理技术,用于对图像进行直方图均衡化。具体实现方法包括: 计算图像的直方图 对直方图进行归一化处理 对图像进行直方图均衡化 直方图归一化可以用于图像增强、图像分割等应用。 Opencv直方图归一化的使用方法 Opencv库提供 cv2.n…

    python 2023年5月10日
    00
  • Opencv 差分滤波器

    OpenCV 差分滤波器 OpenCV 差分滤波器是一种非线性滤波器,可以用于图像边缘检测和轮廓提取等应用。差分滤波器的基本思想是对像中每个素点取其邻域内像素的差值作该像素点的值。本文将介绍OpenCV 差分滤波器的基本原理使用方法,并提供两个示例。 OpenCV 差分滤波器的基本原理 OpenCV 差分滤波器是一种非线性波器,可以用于图像边缘检测和轮廓提取…

    python 2023年5月10日
    00
  • Opencv MAX-MIN滤波器

    OpenCV MAX-MIN滤波器 OpenCV MAX-MIN滤波器是一种非线性滤波器,可以用于图像边缘检测和轮廓提取等应用。MAX-MIN滤波器的基本思想是对图像中的每个像素点取其邻域内像素的最大值和最小值之差作该像素点的值。本文将介绍OpenCV MAX-MIN滤波器的基本原理和使用方法,并提供两个示例。 OpenCV MAX-MIN滤波器的基本原理 …

    python 2023年5月10日
    00
  • Opencv二值化

    OpenCV二值化 OpenCV二值化是一种将灰度图像转换为二值图像的方法。二值图像只包含黑色和白色两种颜色,可以用于图像处理中的多应用,如边缘检测、形态学操作等。本文将介绍OpenCV二值化的基本概念和使用方法,并提供两个示例说明。 OpenCV二值化的基本概念 OpenCV二值化是一种将灰度图像转换为二值图像方法。二值图像只包含黑色和白色两种颜色,可以用…

    python 2023年5月10日
    00
  • Opencv 使用Gabor滤波器进行特征提取

    OpenCV 中的 Gabor 滤波器是一种图像处理技术,它可以通过对图像进行 Gabor 滤波来提取图像的纹理特征。在 OpenCV 中,可以使用 cv2.getGaborKernel() 函数来生成 Gabor 滤波器,使用 cv2.filter2D() 函数来对图像进行滤波。 使用 cv2.getGaborKernel() 函数的基本语法如下: ker…

    python 2023年5月11日
    00
  • Opencv 膨胀

    Opencv 膨胀是一种常用的图像处理技术,可以用于图像的形态学处理,例如去除噪声、填充空洞、分离物体等。本文将详细讲解Opencv 膨胀的完整攻略,包括基本原理、方法和两个示例。 Opencv 膨胀的基本原理 Opencv 膨胀是一种基于结构元素的图像处理技术,通过图像中的像素进行膨胀,可以扩大物体的面积,填充空洞,去除噪声等。具体实现方法包括: cv2.…

    python 2023年5月10日
    00
合作推广
合作推广
分享本页
返回顶部