材转码 2024-03-26 12:22 采纳率: 14.3%
浏览 28
已结题

特征匹配superglue修改图像大小

github.com/Hanson0910/MNNSuperGlue
superglue实现的c++版本中,我想让图像大小还是原图,而不是改为640*480,注释掉resize函数后会报错,请问有什么办法解决吗?可以修改mnn文件来实现吗?怎么修改?谢谢!

  • 写回答

21条回答 默认 最新

  • 码农阿豪@新空间代码工作室 Java领域优质创作者 2024-03-26 12:23
    关注
    获得0.30元问题酬金
    让阿豪来帮你解答,本回答参考chatgpt3.5编写提供,如果还有疑问可以评论或留言
    问题:如何在superglue实现的c++版本中让图像大小保持原图而不改为640*480,注释掉resize函数后会报错,有什么解决方法?可以修改mnn文件来实现吗?怎么修改? 解答: 在MNNSuperGlue的c++版本中,图像大小被resize为了640*480的大小,这是因为模型在训练时的输入大小为640*480。如果想让图像大小保持原有大小,有两个方法可以解决。 方法一:更改SuperGlue.cpp文件中resize函数的代码 可以在SuperGlue.cpp文件中的resize函数中增加一些判断语句,如果输入图像大小与640*480相同,则直接返回不做任何处理。代码示例如下:
    void resize(cv::Mat& img, int target_width, int target_height) {
      if (img.cols == target_width && img.rows == target_height) {
        // Return if the image size is already the target size
        return;
      }
      // Resize image to target size
      cv::resize(img, img, cv::Size(target_width, target_height));
    }
    

    方法二:修改模型的输入大小 可以通过修改模型的输入大小来适应原有的图像大小。首先需要打开mnn文件,在文件中搜索"input_1",找到输入层的部分。可以看到如下所示的代码:

    {
        "name":"input_1",
        "shape":[1,480,640,3],
        "dtype":0,
        "data_index":0
    },
    

    其中,shape表示输入层的形状,它的值为[1,480,640,3],表示输入数据的形状为[batch_size, height, width, channel]。可以修改其中的height和width,使它们与原有图像的大小相同。修改之后的代码片段如下:

    {
        "name":"input_1",
        "shape":[1,height,width,3],
        "dtype":0,
        "data_index":0
    },
    

    其中,height和width分别表示原有图像的高度和宽度。 注意:修改mnn文件时,需要对文件结构有一定的了解,同时需要保证修改后的文件与训练时使用的模型相对应。 以上就是这个问题的解答。如果您在使用MNNSuperGlue时遇到了其他问题,可以在GitHub上提出Issue,或者在社区中提问求助。

    评论

报告相同问题?

问题事件

  • 系统已结题 4月3日
  • 创建了问题 3月26日

悬赏问题

  • ¥15 求一个C# sm4 加密解密的代码
  • ¥20 centos7下载mysql提示DNS解析异常
  • ¥20 vx转账功能对方不能领取
  • ¥15 vue2+codemirror 运行后页面光标太大了
  • ¥15 pdfjs库如何在前端实现打印、旋转等功能
  • ¥15 combobox数据绑定问题
  • ¥15 maven打包时,为什么有的依赖打不进去包
  • ¥15 求复现机器学习文章一篇
  • ¥15 爬虫抓取数据|解析视频文本内容(相关搜索:自动化)
  • ¥15 combobox绑定值改变的问题