github.com/Hanson0910/MNNSuperGlue
superglue实现的c++版本中,我想让图像大小还是原图,而不是改为640*480,注释掉resize函数后会报错,请问有什么办法解决吗?可以修改mnn文件来实现吗?怎么修改?谢谢!
特征匹配superglue修改图像大小
- 写回答
- 好问题 0 提建议
- 关注问题
- 邀请回答
-
21条回答 默认 最新
关注获得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,或者在社区中提问求助。
解决 无用评论 打赏 举报