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 Evaluation

    以下是关于Opencv Evaluation的完整攻略。 Opencv Evaluation基本原理 Opencv Evaluation是一种评估图像处理算法性能的工具,它可以评估算法的准确性、召回率、精确度等指标。Opencv Evaluation的基本原理将测试图像和标注数据输入到算法中,然计算算法的准确性、召回率、精确度等指标,从而评估算法的性能。 O…

    python 2023年5月11日
    00
  • Python OpenCV – setWindowProperty

    OpenCV 中的 setWindowProperty 函数可以用于设置窗口的属性,例如窗口大小、窗口位置、窗口标题等。在 Python 中,可以使用 cv2.setWindowProperty 函数来实现 setWindowProperty。 setWindowProperty 的基本步骤如: 创建窗口 设置窗口属性 显示图像或视频以下是两个示例说明: 示…

    python 2023年5月11日
    00
  • Opencv 傅立叶变换带通滤波

    Opencv 傅立叶变换带通滤波的完整攻略 Opencv 傅立叶变换带通滤波是一种常见的图像处理技术,可以用于图像的频域分析、滤波等操作。本文将详细讲解Opencv 傅立叶变换带通滤波的完整攻略,包括基本原理、方法和两个示例说明。 Opencv 傅立叶变换带通滤波的基本原理 Opencv 傅立叶变换带通滤波是一种基于傅立叶变换的图像处理技术,可以通过对图像进…

    python 2023年5月10日
    00
  • Opencv 8-连接数

    以下是关于Opencv 8-连接数的详细攻略。 Opencv 8-连接数基本原理 Opencv 8-连接数是一种常用的图像处理技术,用于在二值图像中查找连通域。具体实现方法包括: cv2.findContours 函数:用于在二值图像中查找轮廓。 8-连接数算法的基本原理是在二值图像中查找连通域时,将每个像素点作一个节点,如果两个节点相邻且都为前景像素,则它…

    python 2023年5月10日
    00
  • Opencv灰度化

    OpenCV大津二值化算法 OpenCV大津二值化算法是一种自适应的二值化方法,可以根据图像的灰度分布自动确定二值化的阈值,从而将图像转换为黑白二值图像。本文将介绍大津二值化算法的基本原理和使用方法,并提供两个示例说明。 大津二值化算法的基本原理 大津二值化算法的基本原理是寻找一个阈值,使得将图像分为两个部分后,两个部分的类内方差之和最小,类间方差之和最大。…

    python 2023年5月10日
    00
  • Opencv 色彩追踪 形态学处理

    OpenCV 中的色彩追踪形态学处理是一种图像处理技术,它可以通过对图像进行形态学处理来实现对特定颜色的追踪。在 OpenCV 中,可以使用 cv2.inRange() 函数来实现色彩追踪,使用形态学处理函数来对图像进行处理。 使用 cv2.inRange() 函数的基本语法如下: mask = cv2.inRange(image, lower, upper…

    python 2023年5月11日
    00
  • Opencv Motion Filter

    OpenCV MotionFilter OpenCV MotionFilter是一种图像处理方法,可以用于模拟运动模糊效果。本文将介绍OpenCV MotionFilter的基本原理和使用方法,并提供两个示例。 OpenCV MotionFilter的基本原理 OpenCV MotionFilter是一种线性平滑滤波器,可以用于模拟运动模糊效果。运动糊的基本…

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

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

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