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()
相关推荐
清华kenny1 分钟前
中医馆如何参考安徽亳州中医AI健康辨识仪品牌排名前十
大数据·人工智能·安徽晓得养
Jsundoku3 分钟前
第七章 机器学习 -- 其他经典算法
人工智能·算法·机器学习
会编程的吕洞宾5 分钟前
LangChain4j 流式输出实战:让 AI 回复像打字机一样逐字显示
java·开发语言·人工智能·后端
不脱发的程序猿7 分钟前
红利ETF量化策略
人工智能·python·ai·程序员·量化交易·etf·策略回测
鬓戈15 分钟前
llmproxy 系统开发目的和基本功能
人工智能·python
武子康15 分钟前
CUDA OOM 不只是“显存不够”
人工智能·后端·agent
陈嘿萌25 分钟前
Fusion Anything Model:面向通用多模态融合的基座模型
图像处理·人工智能·深度学习·计算机视觉·学术研究与理论基础
康实训1 小时前
高职院校智慧体适能实训室建设
人工智能·实训室·实训室建设
老鱼说AI1 小时前
SNN脉冲神经网络:全连接、卷积与循环SNN
人工智能·深度学习·神经网络·机器学习·自然语言处理
code2cat1 小时前
【随笔】RAG检索缓存:复用证据之前,先把权限和版本放进缓存键
java·人工智能·缓存·知识库·rag