py实现surf特征提取

py 复制代码
import cv2

def main():
    # 加载图像
    image1 = cv2.imread('image1.jpg', cv2.IMREAD_GRAYSCALE)
    image2 = cv2.imread('image2.jpg', cv2.IMREAD_GRAYSCALE)

    # 创建SURF对象
    surf = cv2.xfeatures2d.SURF_create()

    # 检测特征点和描述符
    keypoints1, descriptors1 = surf.detectAndCompute(image1, None)
    keypoints2, descriptors2 = surf.detectAndCompute(image2, None)

    # 绘制特征点
    result_image1 = cv2.drawKeypoints(image1, keypoints1, None, (0, 255, 0), cv2.DRAW_MATCHES_FLAGS_DRAW_RICH_KEYPOINTS)
    result_image2 = cv2.drawKeypoints(image2, keypoints2, None, (0, 255, 0), cv2.DRAW_MATCHES_FLAGS_DRAW_RICH_KEYPOINTS)

    # 显示图像
    cv2.imshow("Image 1", result_image1)
    cv2.imshow("Image 2", result_image2)
    cv2.waitKey(0)
    cv2.destroyAllWindows()

if __name__ == "__main__":
    main()
py 复制代码
import cv2
import numpy as np

def main():
    # 加载图像
    image1 = cv2.imread('image1.jpg', cv2.IMREAD_GRAYSCALE)
    image2 = cv2.imread('image2.jpg', cv2.IMREAD_GRAYSCALE)

    # 创建SURF对象
    surf = cv2.xfeatures2d.SURF_create()

    # 检测特征点和描述符
    keypoints1, descriptors1 = surf.detectAndCompute(image1, None)
    keypoints2, descriptors2 = surf.detectAndCompute(image2, None)

    # 创建匹配器
    matcher = cv2.DescriptorMatcher_create(cv2.DescriptorMatcher_FLANNBASED)
    matches = matcher.match(descriptors1, descriptors2)

    # 根据距离排序匹配项
    matches = sorted(matches, key=lambda x: x.distance)

    # 提取前10个最佳匹配项
    good_matches = matches[:10]

    # 绘制匹配点和线条
    result_image = cv2.drawMatches(image1, keypoints1, image2, keypoints2, good_matches, None, flags=cv2.DrawMatchesFlags_NOT_DRAW_SINGLE_POINTS)

    # 显示图像
    cv2.imshow("Matches", result_image)
    cv2.waitKey(0)
    cv2.destroyAllWindows()

if __name__ == "__main__":
    main()
相关推荐
新智元3 分钟前
CUDA 再见了!寒武纪亮出软件全家桶
人工智能·openai
oe10199 分钟前
好文与笔记分享 A Survey of Context Engineering for Large Language Models(下)
人工智能·笔记·语言模型·agent
有为少年10 分钟前
告别乱码:OpenCV 中文路径(Unicode)读写的解决方案
人工智能·opencv·计算机视觉
清风与日月12 分钟前
halcon分类器使用标准流程
深度学习·目标检测·计算机视觉
初学小刘14 分钟前
基于 U-Net 的医学图像分割
python·opencv·计算机视觉
FreeCode41 分钟前
LangChain1.0智能体开发:模型使用
人工智能·langchain·agent
张较瘦_1 小时前
[论文阅读] AI+ | 从 “刚性科层” 到 “智能协同”:一文读懂 AI 应对国家安全风险的核心逻辑
论文阅读·人工智能
anscos1 小时前
庭田科技亮相成都复材盛会,以仿真技术赋能产业革新
大数据·人工智能·科技
阿里云大数据AI技术1 小时前
PAI Physical AI Notebook 详解 1:基于 Isaac 仿真的操作动作数据扩增与模仿学习
人工智能
该用户已不存在1 小时前
Vibe Coding 入门指南:从想法到产品的完整路径
前端·人工智能·后端