SuperGluePretrainedNetwork调用接口版本(两个版本!)

发布于:2024-04-09 ⋅ 阅读:(155) ⋅ 点赞:(0)

        本脚本是一个基于Python的应用,旨在演示如何使用SuperGlue算法进行图像之间的特征匹配。SuperGlue是一个强大的特征匹配工具,能够在不同的图像之间找到对应的关键点。这个工具尤其适用于计算机视觉任务,如立体视觉、图像拼接、对象识别和追踪等场景。脚本使用PyTorch框架,并且可以选择在CPU或GPU上运行。

脚本的工作流程如下:

  1. 解析命令行参数,用于设置输入输出目录、图像尺寸、SuperGlue配置等。
  2. 根据用户选择,决定算法是在CPU还是GPU上执行。
  3. 加载预设的配置,初始化SuperPoint和SuperGlue模型。
  4. 定义图像预处理函数来调整图像大小。
  5. 加载两幅图像,调整它们的大小,并将它们转换为PyTorch张量。
  6. 使用SuperPoint提取关键点和描述符。
  7. 使用SuperGlue算法匹配两幅图像的关键点。
  8. 可视化并打印匹配的关键点坐标。
  9. 如果设置了输出目录,将结果图像写到磁盘上。

        这个脚本展示了如何在实践中使用深度学习模型来处理实际问题,并提供了图像匹配演示。

#! /usr/bin/env python3
import argparse
import matplotlib.cm as cm
import cv2
from pathlib import Path
import torch
from models.matching import Matching
from models.utils import (make_matching_plot_fast, frame2tensor)
torch.set_grad_enabled(False)  # 关闭PyTorch的梯度计算,提高效率,因为我们不需要进行模型训练

# 创建命令行参数解析器,以便从命令行接收参数
parser = argparse.ArgumentParser(description='SuperGlue',
                                 formatter_class=argparse.ArgumentDefaultsHelpFormatter)
# 添加命令行参数
parser.add_argument('--input', type=str, default='assets/freiburg_sequence/',
                    help='Input directory or video file')
parser.add_argument('--output_dir', type=str, default=None,
                    help='Directory to write output frames (default: None)')
parser.add_argument('--resize', type=int, nargs='+', default=[1241, 376],
                    help='Resize input frames (default: [640, 480])')
parser.add_argument('--superglue', choices={'indoor', 'outdoor'}, default='outdoor',
                    help='SuperGlue weights (default: indoor)')
parser.add_argument('--show_keypoints', action='store_true',
                    help='Show detected keypoints (default: False)')
parser.add_argument('--no_display', action='

网站公告

今日签到

点亮在社区的每一天
去签到